parser

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

 

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

^reflection:is и @GET_DEFAULT

G_Z 19.03.2016 21:14 / 19.03.2016 22:16

При наличии у объекта геттера по умолчанию проверка на is junction/method несуществующего свойства возвращает истину.
@main[]
$test[^test::create[]]
^if(^reflection:is[^math:uid64[];junction;$test])[y;n]
^if(^reflection:is[^math:uid64[];method;$test])[y;n]


@CLASS
test

@create[]

@GET_DEFAULT[]
$result[]
Таким образом, и
$def(^reflection:is[$method;junction;$object] || ^reflection:method[$object;$method] is junction)
не работает в качестве способа проверки наличия метода.

Остановился на такой проверке:
$def(^reflection:is[$method;junction;$object] && $object.$method is junction || ^reflection:method[$object;$method] is junction)