PDA

Просмотр полной версии : многомерный текстовый массив


Марк
09.12.2005, 16:51
Решил использовать вместо обычных переменных многомерные массивы для оптимизации кода, но есть 1 проблемка - получается работать только с одномерными.

Пример 1:
char["move"] = true;
q = char["move"]
все работает, переменной q присваивается значение, причем массив можно даже не объявлять

Пример 2
двухмерный массив
char = [[], []];
char["res"]["fire"] = 0;
q = char["res"]["fire"];

не работает как с объявлением массива так и без, q = undentified

Объявление двухмерного массива взял из этой темы :
http://www.flasher.ru/forum/showthread.php?t=38854&highlight=%EC%ED%EE%E3%EE%EC%E5%F0%ED%FB%E9

iNils
09.12.2005, 16:55
char = [];
char["res"]=[]
char["res"]["fire"] = 5;
q = char["res"]["fire"];
trace(q)

Марк
09.12.2005, 16:58
А если у меня большой массив, скажем десятки вложенных переменных ? Каждый раз придется писать по 2 строки типа
char["res"]=[]
char["res"]["fire"] = 5;
вместо 1й ?

iNils
09.12.2005, 16:58
char=[[],[]];
это тоже самое, что и
char=[];
char[0]=[];
char[1]=[];

Марк
09.12.2005, 17:00
ок, thx за помощь

iNils
09.12.2005, 17:07
Можно написать функцию
array2D = function (array1D, arg1, arg2, value) {
if (!array1D[arg1]) {
array1D[arg1] = [];
}
array1D[arg1][arg2] = value;
};
char = [];
array2D (char, "res", "fire", 5);
array2D (char, "res", "water", 10);
q = char["res"]["fire"];
w = char["res"]["water"];
trace (q);
trace (w);

Марк
09.12.2005, 17:16
да, через функцию это намного удобнее делать, еще раз thx за идею _))