Что нового

создание переменной через Assign и последующее её использование без Eval

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Код:
Global $variable
If Assign("variable", "Привет") Then MsgBox(4096, "", $variable)    ; Выведет сообщение "Привет"

Прекрасно работает, вот только зачем нужен Assign, если можно просто написать Global $variable="привет"
Столкнулся с необходимостью создания переменных имя которых состоит из значения другой переменной т.е.
Код:
$str = ":st"
$met = StringRegExp($str, ':(\w*)', 3)
$pe = "met_"&$met[0]
Assign("met_"&$met[0], 5, 2)

Но использовать такую переменную можно только через Eval, а очень хочется чтоб она существовала как $met_st. Переменная $str при этом читается из файла создаваемого пользователем, и соответственно заранее мне не известна.
 

SyDr

Сидра
Сообщения
651
Репутация
158
Что за ерунда?
Если ты используешь переменную в виде $name, это означает, что тебе заранее известно её имя. Однако, у тебя её имя не известно, так как читается из файла.

Более того, твоя переменная и существует, как $met_st. Это очень легко проверяется.
 
Автор
N

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
в таком случае должен работать код:
Код:
$met = "abc"
Assign("user_"&$met, 123, 2)
MsgBox(0, "", $user_abc)

А он не работает!
Работает только в виде:
Код:
$met = "abc"
Assign("user_"&$met, 123, 2)
MsgBox(0, "", Eval("user_abc"))

А это мне не удобно, не буду вдаваться в подробности по поводу того почему не удобно.

Оказвается если проигнорировать ошибку: "WARNING: $met_abc: possibly used before declaration." то первый вариант кода тоже работает :blink:
 

SyDr

Сидра
Сообщения
651
Репутация
158
NoMad73rus [?]
Оказвается если проигнорировать ошибку: "WARNING: $met_abc: possibly used before declaration." то первый вариант кода тоже работает
Это не ошибка. Это "ПРЕДУПРЖДЕНИЕ: $met_abc: возможно, используется перед объявлением."

Но всё равно, это мазохизм, объявлять переменные через Assign, а потом обращаться к ним без Eval или IsDeclared...
 
Автор
N

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Значит буду страдать мазохизмом )) началось всё с идеи создания собственного интерпритатора, для собственного "языка", что само по себе уже маразм - интерпритатор на интерпритаторе ;D
 
Верх