parser

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

 

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

Точно ли нужен BASE?

moko 22.10 02:46 / 23.10 05:44

Если сделать например как ниже, то будет выведено "a method", поскольку если метод в потомке не переопределен, вызывается метод родителя. BASE же заменяется на имя класса во время компиляции.
@main[]
^b:method2[]

@CLASS
TextMixin

@method1[]
$result[result]

@method2[]
^method[]

@CLASS
a

@method[]
a method

@CLASS
b

@BASE
a

@auto[]
^reflection:mixin[$TextMixin:CLASS;$.methods(true)]
Если это реально поможет, можно сделать, чтобы ^reflection:base[] без параметров возвращал актуального родителя. Но и сейчас можно без этого обойтись, просто чуть более громоздко.
@main[]
^b:method[]

@CLASS
TextMixin

@method1[]
$result[result]


@method[]
$base[^reflection:base[$self]]
^base.method[]

@CLASS
a

@method[]
a method

@CLASS
b

@BASE
a

@auto[]
^reflection:mixin[$TextMixin:CLASS;$.methods(true) $.overwrite(true) ]