Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обращение к локальной переменной через String (http://www.flasher.ru/forum/showthread.php?t=177610)

gait 04.04.2012 12:24

Обращение к локальной переменной через String
 
Добрый день, уважаемые форумчане!
Возможно ли обратиться к локальной переменной barMessage так же, как я обратился к полю класса _fooMessage?
Код AS3:

package 
{
        import flash.display.Sprite;
 
        public class Main extends Sprite
        {
                private var _fooMessage:String = "foo message";
 
                public function Main():void
                {
                        foo();
                        bar();
                }
 
                public function foo():void
                {
                        trace(this["_fooMessage"]); // выведет "foo message"
                }
 
                public function bar():void
                {
                        var barMessage:String = "bar message";
                        //trace(...) ?
                }
        }
}


Zebestov 04.04.2012 12:32

Ты не поверишь:
Код AS3:

trace(barMessage)

Я понимаю, зачем к полю снаружи(!) стучаться:
Код AS3:

trace(someObj[someVar])

Но внутри метода зачем?

gait 04.04.2012 13:08

Цитата:

Сообщение от Zebestov (Сообщение 1072986)
Ты не поверишь:
Код AS3:

trace(barMessage)


Кроме этого способа есть другие? (Хотелось бы обратиться через "barMessage", а не через barMessage).

Тут такое дело. Есть ~20 локальных переменных, у них в названии есть определенный id. То есть someVar1, someVar2, ..., someVar20. У меня есть массив someArr:Array = [3, 5, 8, 15, 17]. Я должен пройтись по всем someVar с id из массива и сделать с ними что-то. Если бы эти локальные переменные были полями класса, то было бы всё просто:
Код AS3:

var someArr:Array = [3, 5, 8, 15, 17];
for (var i:int = 1; i <= someArr.length; i++)
{
        this["someVar" + someArr[i]].doSomeFunc();
}

Вот хотелось бы нечто подобное сделать с локальными переменными. Но, похоже, что подобным образом не получится, придется делать отдельный класс для локальных переменных, давать им имена и по ним выбирать.

-De- 04.04.2012 13:14

Может, отрезать палец тому, кто сделал 20 переменных с такими именами и переименовать их таки в массив?
someVari -> someVar[i-1]

gait 04.04.2012 13:21

Цитата:

Сообщение от -De- (Сообщение 1072990)
someVari -> someVar[i-1]

Еще есть проблема в том, что от в диапазоне от 1 до 20 некоторые переменные отсутствуют. То есть someVar1, someVar2, someVar4, someVar7.

Deimos747 04.04.2012 13:25

Цитата:

Сообщение от gait (Сообщение 1072992)
Еще есть проблема в том, что от в диапазоне от 1 до 20 некоторые переменные отсутствуют. То есть someVar1, someVar2, someVar4, someVar7.

Array позволяет оставлять пустые ячейки

Genzo 04.04.2012 13:30

Код AS3:

var someArr:Array = [someVar3, someVar5, someVar8, someVar15, someVar17];
for (var i:int = 1; i <= someArr.length; i++)
{
        someArr[i].doSomeFunc();
}



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

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