PDA

Просмотр полной версии : Нужный массив в качестве параметра


Godwarlock
29.05.2015, 16:11
Всем привет. Подскажите со способом.
Есть к примеру 2 массива в классе
private var arr_1 = [];
private var arr_2 = [];//Значения могут быть любыми
Далее есть функция с параметром id
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

private var arr_1 = [];
private var arr_2 = [];

function unabme(id:int):void
{
load_arr(this["arr_" + id]);
}


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

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
Спасибо за помощь) Воспользовался первым способом, думаю он будет лучше)