parser

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

 

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

Junction-операторы

G_Z 30.03.2016 05:57

@main[]
$MAIN:operator[$scope:method]

call from MAIN: ^operator[]<br/>

$test[^test::create[]]
call from object:
^try{
	^test.method[]
}{
	$exception.handled(true)
	$exception.type, $exception.comment
}


@CLASS
scope

@static:method[]
operator result


@CLASS
test

@create[]

@method[]
^operator[]
call from MAIN: operator result
call from object: parser.runtime, undefined method


С одной стороны — «Если не указан объект, то конструкция является вызовом метода текущего класса (если у класса нет метода с таким именем, будет вызван метод базового класса) или оператора. При совпадении имен вызывается оператор».

C другой — «Поиск значения переменной происходит в:
— в списке локальных переменных;
— в текущем объекте и его классе;
— в родительских объектах и их классах
».

Не стоит ли подобные случаи обрабатывать специально?
Ссылка на метод в переменной неполноценна.

Нужно подобное, к примеру, в случае, когда из соображений совместимости необходимо иметь оператор, который является методом статического класса, при этом не хочется городить огород прокси-методов.

Сейчас работает либо явное объявление оператора, либо вызов из класса с явным указанием «MAIN:».

  • Junction-операторы, G_Z [M] 30.03.2016 05:57