Не получается изолировать поля/перменные, чтобы был доступ только через свойства объекта но не напрямую. Получается либо-либо.
AndySobb 07.11.2014 18:21
Сабж.
Задача: изолировать внутренние поля/переменные класса, и отдавать что хочу только через свойства или методы в result'e
Получается пока только что-то одно: либо я подхватываю в свойстве внутреннюю переменную и работаю с ней и она шарится наружу. Либо изолируется как наружу, так и между методом и свойством внутри класса.
Пример: я создаю объект класса myclass и отдаю конструктору hash-объект. Я хочу получить нечто, что является частью hash-объекта через запрос несуществуюего поля и дальнейшую обработку и выдачу.
@CLASS
myclass
@OPTIONS
locals
@create[input_obj]
$self.internal_obj[$input_obj]
@GET_DEFAULT[fieldname]
$result[$self.internal_obj.$fieldname]
@main[]
$myhash[
$.alice[0]
$.bob[1]
]
$myobj[^myclass::create[$myhash]]
# Вернет TEST=1, отрабатывается через свойство
TEST=$myobj.bob
# Вернет TEST=1, по прямому обращению к полю объекта, а как мне его изолировать?
TEST=$myobj.internal_obj.bob
- Не получается изолировать поля/перменные, чтобы был доступ только через свойства объекта но не напрямую. Получается либо-либо., AndySobb 07.11.2014 18:21
- Ответ, MoKo 07.11.2014 21:07
- А это вообще отвал башки => $myobj[^myclass::create[$myhash] $.property1[value1] ..., Andrey 08.11.2014 00:37
- Ответ, MoKo 08.11.2014 14:36
- Но вообще по ощущению не хватает именно локальных переменных в рамках класса/объекта но доступного между методами и обработчиками свойств. Есть ли весомые основания для их отсутствия. Добавить к @OPTIONS class_locals напримэр (-), AndySobb 08.11.2014 00:01
- Ответ, MoKo 08.11.2014 14:58
- Вообще конкретно это не критично, это все в рамках изучения тонкостей, проще просто отбить служебные переменные каким-то символом, чтобы не зацепить (-), AndySobb 07.11.2014 23:57
- $caller уже попробовал - мне понравилось :) можно делать интересные рекурсии. (-), AndySobb 07.11.2014 23:49
- Не совсем понял обход с ^reflection:uid[$self] - можно на примере?, AndySobb 07.11.2014 23:44