Zastanawiam się, czy jest jakiś sposób na rozpakowanie listy argumentów o zmiennej długości w AS3. Weźmy na przykład tę funkcję:Unrolling var args w AS3
public function varArgsFunc(amount:int, ...args):Array
{
if (amount == 3)
{
return args
}
else
{
return varArgsFunc(++amount, args)
}
}
Gdybym nazywają to:
var result:Array = varArgsFunc(0, [])
wynik zawiera teraz zagnieżdżony zestaw tablic:
[[[[]]]]
Tutaj problemem jest to, że parametr args jest traktowany jak tablica. Więc jeśli przekażę go do funkcji ze zmienną listą argumentów, będzie traktowany jako pojedynczy argument.
W Scala znajduje się: operator _ *, który mówi, że kompilator rozpadają listę do listy parametrów:
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])
chciałbym wiedzieć, czy to technika/operator występuje w AS3, aby rozwinąć tablica do listy argumentów.
Dziękuję za odpowiedź, ale to nie jest to, czego szukam dla. Przerobiłem to pytanie, próbując wyjaśnić siebie dokładniej. –
hokay, zredagowałem moją odpowiedź. Lepiej teraz? ;) – grapefrukt
Dzięki grejpfrutowi –