Mi chiedo se ci sia un modo per decomprimere un elenco di argomenti di lunghezza variabile in AS3. Prendiamo ad esempio questa funzione:Srotolamento di argomenti in AS3
public function varArgsFunc(amount:int, ...args):Array
{
if (amount == 3)
{
return args
}
else
{
return varArgsFunc(++amount, args)
}
}
Se io chiamo questo:
var result:Array = varArgsFunc(0, [])
risultato ora contiene una serie nidificato di array:
[[[[]]]]
il problema qui è che il parametro args è trattato come una matrice. Quindi se lo passo su una funzione con una lista di argomenti variabili, sarà trattato come un singolo argomento.
In Scala c'è il: _ * operatore che dice al compilatore di spezzare un elenco in un elenco di parametri:
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])
Vorrei sapere se una tecnica/operatore esiste in AS3 per espandere una matrice in una lista di argomenti.
Grazie per la risposta, ma questo non è quello che sto cercando per. Ho riscritto la domanda nel tentativo di spiegarmi meglio. –
hokay, ha modificato la mia risposta. meglio ora? ;) – grapefrukt
Grazie pompelmo –