| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
moko 09.09.2016 18:12
Поступило предложение сделать объекты в парсере не как сейчас, экземплярами класса, а чтобы они имели прототипом класс, по аналогии с Java Script. При чтении отличий нет, а вот запись будет всегда происходить в поле объекта. Сейчас, если такое поле есть в классе, при записи в поле объекта изменится его значение в классе. Обратная совместимость здесь понятно не 100%, но по факту изменение свойств класса из объекта - редкий и не самый логичный случай (во всяком случае у нас на первый взгляд несовместимостей не вылезло). Зато можно будет так:@main[]
# обычный объект
$o[^test::create[]]
$o.default
^o.method[]
# можно сделать объект, у которого значения свойства отличается от значения в классе
$o[^test::create[some]]
$o.default
# можно сделать объект, у которого метод отличается от обычной реализации
$o[^test::create[special]]
^o.method[]
# как и раньше, статическое поле класса можно переопределить
$test:default
$test:default[all but one]
# и оно изменится у использующих его объектов
$o.default
@CLASS
test
@auto[]
$default[all]
@create[d]
^if($d eq 'special'){
$method[$special]
}(def $d){
$default[$d]
}
@method[]
common
@special[]
specialКакие будут мнения? :)