Просмотр полной версии : Название переменной
Как мне создать произвольное название переменной? к примеру как в php - ${$str}
set variable не подходит т.к. все равно я потом не смогу к ней никак обратиться :(
Помогите pls если так можно в flash`е
Egoritch
12.06.2002, 18:24
s="temp"+random(20000);
variab=eval(s);
variab=10;
например так....
тогда (кажися) допустим random(20000) станет 7654, имя переменной будет записано в строковой переменной s (то есть станет temp7654) а самой переменной temp7654 присвоится значение 10.
Поправте меня если я не прав..
УильямБрэдберри
12.06.2002, 21:50
че-то вы намутили :)
просто объявить переменную -
var myAnyVariableName = any_Value
имена могут быть любыми, только не должны начинаться со спецсимволов и числа...
Забудь про "eval"
составные имена
var a = "a"
var b = "b"
var c = a + b // c = "ab"
var number = 666
this["name"+number] = 100
обращаться к myAnyVariableName можно так
trace("name"+number) //name666
trace(this["name"+number]) //100
trace(this["name"+666])//100
trace(name666) // 100
DeliMIter
12.06.2002, 22:05
2Мастер
Не для массива
this["0"] = something;
определяет для текущего объекта (в общем случае - клипа) переменную 0 (ноль) c некоторым значением. То же справедливо и для спецсимволов. А ты говоришь, не могут с числа начинаться... Еще как могут!!! Ну, не адресуешь их потом напрямую, но! :)))))))))
Nox Noctis
12.06.2002, 23:50
2DeliMIter
...теоретическое знание, оно конечно самодостаточно, только прагма она гораздо дороже :)
ты можешь привести хоть один пример, где такие извращенные переменные могут понадобиться ? :) просто любопытно...
зы:
this[1] = "abcdef";
tst={abcdef:"!!!"};
trace(tst[this[1]]);
...о ! я знаю зачем это нужно !.. вскрывает, значит, чел ASV'шкой свфник в поисках кода... а тут ТАКОЕ... испугается ведь :)))))
Egoritch
13.06.2002, 12:42
2УильямБрэдберри: с п а с и б о !
DeliMIter
13.06.2002, 21:52
2Nox
Если бы я сам такое не использовал, я бы и не постил ответ. Мне данная теория пригодилась, когда понадобилось сделать список неких элементов, но не использовать при этом массив (из-за и без того сложной адресации), список формировался один раз и не менялся. Вполне красиво вышло.
Nox Noctis
13.06.2002, 22:03
хм... что-то я не очень тебя понял...
то есть ты сделал список элементов с именами "0","1","2"... и т д ?
но ведь тогда совсем не обязательно делать это так... можно ведь сделать любым образом однотипно названные элементы - и получить тот же эффект...
типа: "строка0","строка1","строка2"... или ты на именах решил сэкономить ? ;)
зы:
все-таки как-то перегруженные имена напрягают :)
и к тому же кто его знает - может ведь встретиться ситауция, когда например литерал 1 будет интерпретироваться не как число, а как элемента с именем "1".... хотя это всего лишь перестраховка :)
DeliMIter
13.06.2002, 23:06
Конкретнее по ситуации: игрушка Life (надеэсь, не надо пояснять эту всемирно известную задачу), у каждой клетки - 8 соседей. Адресация угребещнейшая, как я ни упрощал. Естественно, чем длиннее адресация, тем больше тормозит, да еще по два прохода за турн. И еще нужен массив на эти 8 элементов. В конечном счете я просто взял и написал
_i = 0;
for (var i = X - 1; i < X + 2; i++)
for (var j = Y - 1; j < Y + 2; j++)
if ((i <> X) or (j <> Y))
this[_i++] = ...[i][j];
И ничего, заработало. И проще стало. Ведь так?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.