parser

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

 

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

Смотрим документацию

MadCow 08.07.2010 17:06 / 08.07.2010 17:06

http://www.parser.ru/docs/lang/junctionclass.htm
Junction (класс)
Класс предназначен для хранения кода и контекста его выполнения.
Если я не ошибаюсь, в последней версии парсера у всех классов и их объектов есть системное поле CLASS_NAME
http://www.parser.ru/docs/lang/obj.htm
http://www.parser.ru/docs/lang/defineclass.htm
Системное поле класса: CLASS_NAME [3.2.2]
$объект.CLASS_NAME - хранит имя класса объекта.
Так, например, можно прочитать значение поля CLASS_NAME и у объектов и самого класса table
$tab[^table::create{...}]
$tab.CLASS_NAME
$table:CLASS_NAME
И, пока что, со всеми классами у меня проблем не возникало.
Ровно до тех пор, пока я не наткнулся на Junction.

При том, что в моем примере в переменной $uData хранится не "контекстный" код, задаваемый таким образом:
$uData{код}
а именно ссылка на ранее определенный метод одного из классов.
$uData[$Класс:метод]
Конечно, есть способ решить задачу проверки типа оператором is
^if($uData is "junction"){
	$sClassName[junction]
}{
	$sClassName[$uData.CLASS_NAME]
}
Но это, на мой взгляд, не есть здорево на фоне того, что для всех остальных случаев этот древний и назойливый вопрос (определения типа переменной) получил простое и элегантное решение.

-----------------------------
PS. Вообще, конечно, с junction гораздо больше непоняток было и остается, но к ним уже как-то удалось привыкнуть. Надеялся, что хотя бы с CLASS_NAME он будет вести себя "как все", но не тут-то было. Жаль.

Но хотелось бы понять в чем подвох )))