Новости | 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Какие будут мнения? :)