Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как задать n-штук переменных? (http://www.flasher.ru/forum/showthread.php?t=169792)

baka 12.10.2011 15:26

Как задать n-штук переменных?
 
Как мне задать n-штук переменных? myStuff_1, myStuff_2... myStuff_" +n
Цель - создать n-штук объектов new MyClass

Вот что я хочу сделать, в виде нерабочего кода:
Код AS3:

package {
        public class Main {
                for (var i:int = 0; i<n; i++) {
                        public var this["myStuff_"+i]
                }       
                public function Main () {
                        for (var i:int = 0; i<n; i++) {
                        this["myStuff_"+i] = new MyClassWithStuffLolz() ;
                        }
                }
        }
}


Inet_PC 12.10.2011 15:28

Используйте массив.
Например так:
Код AS3:

package {
        public class Main {
                private var stuffs: Array;       
                public function Main () {
                        stuffs = [];
                        for (var i:int = 0; i<n; i++) {
                        stuffs[i] = new MyClassWithStuffLolz() ;
                        }
                }
        }
}


baka 12.10.2011 16:04

Спасибо, это решит мою проблему.
Тем не менее остался вопрос, можно ли задать переменную с составным именем?
Например:["myVar_"+var1+"_"+var2]

Inet_PC 12.10.2011 16:08

Можно, но ТАК ДЕЛАТЬ НЕ СТОИТ!
Код AS3:

package {
        public class Main {
                private var stuffs: Object;       
                public function Main () {
                        stuffs = {};
                        for (var i:int = 0; i<n; i++) {
                        stuffs["myVar_" + i.toString()] = new MyClassWithStuffLolz() ;
                        }
                }
        }
}


Kidd002 12.10.2011 16:09

Переменную - нет. Параметр у динамического объекта - да.
Код AS3:

var object:Object = { };
for (var i:int = 0; i < 10; i++)
{
    object["foo" + i] = i;
}
trace(object["foo5"]); //5


Hidest 12.10.2011 16:09

Это абсолютно не нужно (по крайней мере я себе не могу представить необходимость подобного). Но в целом, можно использовать свой динамический класс или Object:

Код AS3:

var dataHolder:Object = {};
 
var i:int = 5;
 
dataHolder["someVar_"+i] = "someValue";
 
trace(dataHolder.someVar_5); //someValue



Часовой пояс GMT +4, время: 23:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.