Во первых стоит подумать, нужно ли оно тут...
Misha v.3 29.04.2002 20:07
т.к. у p3 есть нормальные локальные переменные, и очень не рекомендуется переносить некоторые алгоритмы из p2 в p3 как есть (я уже запарился переделывать...).
Например, вместо
^tt.menu{
^if($tt.x = 1){что-то делаем}
}
существенно бустрее работает такое:
$tt1[^tt.select($tt.x == 1)]
^tt.menu{что-то делаем}
Во вторых, если уж загорелось, то делать подобные переменные можно так:
$objName[flag$id]
$$objName(1)
или попробовать прямо так:
${flag$id}(1)
Обратите внимание, что я написал круглые скобки, т.е. сказал, что тут будет число, а не строка.
В з3 значитально удобнее использовать числовые флаги
$is_empty(0)
^if(тра-ля-ла){$is_empty(1)}
^if($is_empty){ делаем что-то }
Далее... был ^number[]... теперь делаем так:
^form:formname.int(0) - т.е. берем элемент формы с именем formname и пытаемся преобразовать к числу, если не получается - суем 0 (можете не ноль, а какой-нить другой default)
Еще удобно для лукапов использовать хеш, а не делать ^locate[]
пример:
$h[^hash:sql{SELECT id, name FROM record}]
$id(10)
^if($h.[$id]){есть элемент с id = 10}{нету элемента}
в общем... читать... думать заново...