Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Нужный массив в качестве параметра (http://www.flasher.ru/forum/showthread.php?t=210934)

Godwarlock 29.05.2015 16:11

Нужный массив в качестве параметра
 
Всем привет. Подскажите со способом.
Есть к примеру 2 массива в классе
Код AS3:

private var arr_1 = [];
private var arr_2 = [];//Значения могут быть любыми

Далее есть функция с параметром id
Код AS3:

function unabme(id:int):void
{
//id от 4-N
if(id == 4)
{
load_arr(arr_1);
}else if(id ==5)
{
load_arr(arr_2);
}
}

Вопрос теперь в следующем. В этой функции идет вызов функции с передачей ссылки на массив в зависимости от параметра id. То есть, если id = 4, мы должны занести в вызываемую функцию массив arr_1 если id = 5 то массив с arr_2 и т.д. Собственно можно было бы сделать через if, но если id будет слишком много, будет куча if и в общем глупая идея так делать. Подскажите более удобный вариант. Надо как-то идентифицировать массивы под ид которые принимаем. Но что-то плохо представляю как это сделать, вернее лучше услышать совет гуру)

PainKiller 29.05.2015 16:23

Я далеко не гуру, но вижу тут 3 варианта:
1. Используйте switch/case
2. Можно напрямую цеплять нужный массив по передаваемому id
Код AS3:

private var arr_1 = [];
private var arr_2 = [];
 
function unabme(id:int):void
{
    load_arr(this["arr_" + id]);
}

В этом случае естественно последняя цифра в названии массива должна совпадать с id
3. Использовать массив/словарь/объект (выбирайте на вкус нужное) для хранение ваших массивов, выцеплять их оттуда по id.
Пример для массива:
Код AS3:

private var arr_1 = [];
private var arr_2 = [];
 
private var all_arr = [ arr_1, arr_2 ];
 
function unabme(id:int):void
{
    load_arr(all_arr[id])
}

где айди соответственно, является индексом для выцепляемого массива.

P.S. Обратите внимания что вы привели код без типизации, и я примеры написал тоже без нее.

Godwarlock 29.05.2015 17:57

Спасибо за помощь) Воспользовался первым способом, думаю он будет лучше)


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

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