PDA

Просмотр полной версии : В цикле нужно создать n-ное кол-во массивов с именем “Имя”+i+j. Помогите.


Kenaz
07.05.2010, 19:08
В цикле нужно создать n-ное кол-во массивов с именем “Имя”+i+j. Помогите. Просмотрел этот раздел. Ответа на подобный вопрос не было.

udaaff
07.05.2010, 19:15
http://www.flasher.ru/forum/showthread.php?t=139301

Kenaz
07.05.2010, 19:25
Не совсем понял как мне это поможет.
У меня код приблизительно такого плана будет. Да и плюс эти массивы будут объединятся.

for(var j=1;j<=3;j++) {
for(var i=1;i<=4;i++) {

eval("RRS"+i) = new Array

z=this["rrs"+i+j]._x
trace(this["rrs"+i+j]._x)

eval("RRS"+i) = [0],[[1],[z]],[3]]
trace(this["RRS"+i][1][1])
}
}

in4core
08.05.2010, 01:57
ахинея какая то. ниче не понятно что вы хотите по вашему коду

wvxvw
08.05.2010, 02:42
Да вы просто скобки не те и не там ставите :D
(eval (+ RRS i) = (0),((1), (z)), (3))
(trace (this(+ RRS i), (1 (1))))
А вообще, если серьезно, то вас действительно абсолютно не понятно.
Попробуйте сформулировать задачу в словах. Ваш код кде-то застрял в промежутке между Лиспом и AS, и понять его абсолютно не представляется возможным :)

in4core
08.05.2010, 03:42
(+ SomeName i) это новая фича чтоли? И как это по страрому написать можно было бы? ? уж явно не ("SomeName"+i) уж очень по разному звучит))))

wvxvw
08.05.2010, 05:30
Эту фичу придумали очень давно, в восьмидесятых годах, но в другом языке...
Просто выражение типа:
eval("RRS"+i) = [0],[[1],[z]],[3]]
Больше напоминает Лисп, чем AS. Скажем так, в ссылочных языках, в которых нельзя переопределить оператор "равно" присвоение результату работы функции не должно компилироваться (т.е. либо это должен быть поинтер, либо не присвоение), кроме всего прочего, там какая-то неразбериха с количеством скобок, их с одной стороны не хватает, или с другой стороны слишком много, но задумку понять это никак не помогает.

in4core
08.05.2010, 13:29
Не не, я просто не понял этой конструкции (+ RRS i) как это понимать ? Например i++ = i+1 или ++i , а вот твою как понять?

Kenaz
08.05.2010, 13:55
wvxvw, мне нужно сформировать несколько массивов с разными именами в цикле, а не один двухмерный массив. Это облегчит мне дальнейшие действия т.к. замес-то шести мерного массива у меня будет всего лишь трехмерный. Представленный код просто попытка понять методом тыка как это можно сделать. Хотя скорее всего это не принципиально, и поэтому сделаю все вторым способом.

wvxvw
08.05.2010, 15:43
in4core:
В Лиспе это функция сложения, там нет оператора сложения, есть только функция которая его реализует.

Kenaz:
var stringHash:Object = {};
stringHash["foo"] = [];
stringHash["foo"][0] = [];
. . .
Только, а зачем вам такие страшные конструкции строить?
А не проще ли было бы использовать классы и методы классов для добавления, например?
class Foo {
private var _children:Object/*Bar*/;

public function Foo()
{
super();
this._children = { };
}

public function addChild(child:Bar, alias:String):Void
{
this._children[alias] = child;
}
. . .
class Bar {
private var _children:Object/*String*/;

public function Bar()
{
super();
this._children = { };
}

public function addChild(child:String, alias:String):Void
{
this._children[alias] = child;
}
}
Удобно, понятно, и еще и проверка типов на этапе компиляции будет.