parser

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

 

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

Шаман - ставлю четыре с плюсом :)

egr 05.10.2003 12:22

Это работает. Усложняем задачу - Поле $flag формируется на базе полей определённых только в базовом классе:

Class1:
@CLASS
class1

@init[]
$hashFlag[
	$.flag(1)
]
$flag(0)
$test[^lang[]]

@lang[]
$result[ru]
Class2
@CLASS
class2

@USE
/class1.p

@BASE
class1

@init[]
^BASE:init[]
$flag(^makeFlag[])

@lang[]
^if($flag){
	$result[en]
}{
	$result[^BASE:lang[]]
}

@makeFlag[]
$result($hashFlag.flag)
В этом случае при таком конструкторе Class2
@init[]
^BASE:init[]
$flag(^makeFlag[])
Вывод такой (как и в прошлой задаче):
Поле test формируется вызовом ^lang[] и:

Поле test класса Class1 - ru
Поле test класса Class2 - ru

Однако вызов ^lang[] в Class2 даёт - en
А при шаманстве:
@init[]
$flag(^makeFlag[])
^BASE:init[]
Ещё и перестаёт работать ^lang[] в производном классе:
Поле test формируется вызовом ^lang[] и:

Поле test класса Class1 - ru
Поле test класса Class2 - ru

Однако вызов ^lang[] в Class2 даёт - ru