| Новости | FAQ | Авторы | Документация | В действии | Библиотека | 
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум | 
Dmitry 18.12.2022 15:15
Геттеры и сеттеры умеют в различение контекста(типа/класса) при обращенииУ пользовательских классов можно определить специальное свойство @GET[], которое будет вызываться при обращении к классу/объекту этого класса в определённых контекстах вызова, например: в скалярном контексте, в выражении и т.п. Если у этого свойства определён параметр, то через него будет передан тип обращения, который может принимать одно из следующих значений: def, expression, bool, double, hash, table или file.
# умозрительную околесицу написал на основе кода в документации
@CLASS
MyClass
@create
$arg[0]
@GET[arg]
^switch[$arg]{
   ^case[hash]{$result[^hash::create[$arg]]}
   ^case[bool]{$result(true)}
   ^case[def]{$result(true)}
   ^case[expression;double]{$result($t)}
   ^case[DEFAULT]{^throw[MyClass;Unsupported type of '$arg']}
}
#----------