^reflection:method[объект;имя метода] ^reflection:method[класс;имя метода]
Возвращает метод объекта или класса. Может быть использован в пользовательских классах, где приоритет доступа к полям выше, чем к методам с тем же именем.
Привязывает метод к вызывавшему его объекту или классу или к переданному вторым параметром объекту или классу.
В Parser все методы привязаны к контексту исполнения (self) и таким образом можно поменять эту привязку.
Пример @main[]
$a[^A::create[]]
# ^a.m[] - метод m не может использоваться напрямую, т.к. одноименное поле m больший приоритет
# поэтому используем ^reflection:method[] чтобы добраться до метода m
$method[^reflection:method[$a;m]]
^method[]
$b[^B::create[]]
# подменяем self, чтобы вызвать метод m в контексте другого объекта, сохраняем результат в объекте b
$b.m[^reflection:method[$method;$b]]
#теперь в объекте b тоже есть метод m
^b.m[]
@CLASS
A
@create[]
$name[object of class A]
$m[object field]
@m[]
method of class A, called on $name
@CLASS
B
@create[]
$name[object of class B]
Выведет:
method of class A, called on object of class A
method of class A, called on object of class B