Il termine "operatore splat" deriva da Ruby, dove il *
carattere (a volte chiamato "splat" - vedi la voce del file in gergo ) è usato per indicare che una voce in un elenco di argomenti dovrebbe "assorbire" un elenco di argomenti.
CoffeeScript ha adottato gli splat in stile Ruby molto presto (vedere il numero 16 ), ma su suggerimento di Douglas Crockford, la sintassi è stata cambiata da *x
a x...
un paio di settimane dopo (vedere il numero 45 ). Tuttavia, CoffeeScripters fa ancora riferimento alla sintassi come "splat" o "splat operator".
Per quanto riguarda ciò che effettivamente fanno, arguments
gli splat suddividono l' oggetto in modo tale che l'argomento splatted diventi un array di tutti gli argomenti "extra". L'esempio più banale è
(args...) ->
In questo caso, args
sarà semplicemente una copia dell'array di arguments
. Gli argomenti splattati possono venire prima, dopo o tra argomenti standard:
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
Nei primi due casi, se la funzione riceve 0-1 argomenti, rest
sarà un array vuoto. Nell'ultimo caso, la funzione deve ricevere più di 2 argomenti perché rest
non sia vuota.
Dal momento che JavaScript non consente più firme per funzioni con lo stesso nome (come fanno C e Java), gli simboli splat sono un enorme risparmio di tempo per gestire un numero variabile di argomenti.
arguments
+call
: stackoverflow.com/questions/17380315/...