Мне интересно, есть ли какой-нибудь способ распаковать список аргументов переменной длины в AS3. Возьмем для примера эту функцию:
public function varArgsFunc(amount:int, ...args):Array
{
if (amount == 3)
{
return args
}
else
{
return varArgsFunc(++amount, args)
}
}
Если я позвоню так:
var result:Array = varArgsFunc(0, [])
Результат теперь содержит вложенный набор массивов:
[[[[]]]]
Проблема здесь в том, что параметр args обрабатывается как массив. Поэтому, если я передам его в функцию со списком аргументов переменной, он будет рассматриваться как один аргумент.
В Scala есть оператор: _ *, который указывает компилятору разбивать список на список параметров:
var list:Array = ['A', 'B', 'C']
// now imagine we have this class, but I would like to pass each list element
// in as a separate argument
class Tuple {
public function Tuple(...elements)
{
// code
}
}
// if you do this, the list will become be passed as the first argument
new Tuple(list)
// in scala you can use the :_* operator to expand the list
new Tuple(list :_*)
// so the :_* operator essentially does this
new Tuple(list[0], list[1], list[2])
Я хотел бы знать, существует ли в AS3 метод / оператор для расширения массива в список аргументов.