RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Странная ситуация с разименованием в Rexx


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Improver
To : Aleksey Tarasow
Subj : Странная ситуация с разименованием в Rexx

> > > Налетел на такую проблему:
> > Ошибка в том, что в подпрограмме используешь локальные переменные "Structure" и "TabType", а потом их же используешь, как часть переменной "test.", при этом там, фактически, вместо "Structure" и "TabType" подставляются их значения. Это какая фишка REXX...
> Даже не смотря на то что ему прямо сказали, что как часть переменной "test." подставляем текст? Всегда считал, что при использовании value не происходит разименования имени. А сейчас выходит, что записи вида value rc'.Structure' и value rc'.'Structure эквиваленты. Печалька...

Не совсем так, эти команды не будут эквивалентны. Если там ставишь имя в кавычках, то ищется переменная с этим именем и подставляется её значение, а если без кавычек, то берётся значение переменной в качестве имени и ищется по нему... Если не понятно изложил, то вот что пишется в примере в доках:

/* После: K=3; fred='K' */
VALUE('fred') -> 'K' /* ищет FRED */
VALUE(fred) -> '3' /* ищет K */
VALUE(fred,5) -> '3' /* и устанавливает K=5 */
VALUE(fred) -> '5'

Да и ошибка вылезает не в них, тут несколько другой ньюанс, например, выполнение команд:
-------
test.asd = '123456'
asd = 'dsa'
say test.asd
-------
выведет на экран строку 'TEST.dsa', а не цифры... В общем, пока не ушёл в бесконечную рекурсию, пытаясь в этом разобраться, просто поменяй имена переменных. :-)

Fri 20 Feb 2015 00:37 Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.