Der Begriff "Splat-Operator" stammt von Ruby, wobei das *
Zeichen (manchmal als "Splat" bezeichnet - siehe Jargon- Dateieintrag ) verwendet wird, um anzugeben, dass ein Eintrag in einer Argumentliste eine Liste von Argumenten "aufsaugen" soll.
Coffee angenommen Ruby - Stil splats sehr früh (siehe Ausgabe 16 ), aber bei Douglas Crockford Vorschlag wurde die Syntax von geändert *x
zu x...
einem paar Wochen später (siehe Frage 45 ). Trotzdem bezeichnen CoffeeScripters die Syntax immer noch als "splat" oder "splat operator".
In Bezug auf das, was sie tatsächlich tun, schneiden Splats das arguments
Objekt so auf, dass das Splatt-Argument zu einem Array aller "zusätzlichen" Argumente wird. Das trivialste Beispiel ist
(args...) ->
In diesem Fall handelt args
es sich lediglich um eine Array-Kopie von arguments
. Splatted-Argumente können entweder vor, nach oder zwischen Standardargumenten stehen:
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
Wenn die Funktion in den ersten beiden Fällen 0-1 Argumente empfängt, handelt rest
es sich um ein leeres Array. Im letzten Fall muss die Funktion mehr als 2 Argumente erhalten rest
, damit sie nicht leer ist.
Da JavaScript nicht mehrere Signaturen für Funktionen mit demselben Namen zulässt (wie dies bei C und Java der Fall ist), sparen Splats viel Zeit beim Umgang mit unterschiedlich vielen Argumenten.
arguments
+call
: stackoverflow.com/questions/17380315/…