| Новости | 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) в данном примере?