Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
andylars 15.04.2016 13:21 / 15.04.2016 13:35
В общем и целом, мне изначально понятно, что отвязывается именованная ссылка (имя объекта/переменной) от одного экземпляра класса, и назначается другому (новому).$MAIN \ $obj <App_class> \ $App <self> | +- $Sub(1) <Sub_class> | # который, по ходу своего выполнения просит наверх у $App, | # пересоздать себе другой, новый $Sub | # этот экземпляр продолжает жить своей жизнью, хоть и отвязывается от канонической ссылки | +- $Sub(2) <Sub_class> # новый экземпляр закрепленный по канонической ссылке $App.SubВыводы, которые я пока сделал.
$App.Sub.Field- то это будет не обращение к своим полям, а обращение к полям уже нового объекта
$self.Sub.FieldВ общем это то, что у меня "утряслось" пока.
@main[] $trigger(true) $session[^App_class::create[]] #---------------------------------------- @CLASS App_class @create[] $self.App[$self] $self.Sub[^Sub_class::create[$self.App]] #---------------------------------------- @CLASS Sub_class @create[_parent] $self.App[$_parent] $self.Random(^math:random(999)) $self.App.Sub.Random ^rem{# выдаст к примеру 123 } ^if($MAIN:trigger){ $MAIN:trigger(false) ^self.App.create[] } $self.App.Sub.Random ^rem{# выдаст уже 456, т.к. он обратился на самом деле к другому экземпляру } $self.Random ^rem{# по-прежнему хранит 123 } #----------------------------------------P.S.: И да, существует способ "убить" старый экземпляр $Sub(1) в данном примере?