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
- Ответ, Misha v.3 [M] 30.03.2016 11:56
- Ответ, G_Z [M] 30.03.2016 16:08
- Ответ, Misha v.3 [M] 31.03.2016 15:00
- Ответ, G_Z [M] 31.03.2016 15:09 / 31.03.2016 16:27