parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

А геттеры и сеттеры не подойдут?

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']}
}


#----------