parser

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

 

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

Компиляция в контексте объекта

G_Z 19.11.2015 23:57

@main[]
$t[^test::create[$.a[1]]]
$t2[^test::create[$.a[2]]]
$t.b


@CLASS
test

@create[data]
$self.data[$data]

^process[$self]{
^@GET_b[]
^$result[$self.data.a]
}
Ожидаю 1, получаю 2.
Как понимаю, код компилируется в контексте класса, а не объекта, несмотря на передачу объекта в качестве контекста.

Даже если вынести компиляцию из конструктора ситуация не меняется, и передача $self в качестве контекста не работает.

Понятно, что можно написать
^$result[^$self.data.a]
и получить значение на момент выполнения, а не на момент компиляции, но интересно почему не работает в изначальном виде.