Schauen Sie sich dieses CoffeeScript-Tutorial an: http://jashkenas.github.com/coffee-script/
Ich verstehe nicht ganz, wofür die Splats sind. Was ist das für eine Konstruktion? Woher kommt es (historisch)
javascript
coffeescript
Interstar
quelle
quelle
arguments
+call
: stackoverflow.com/questions/17380315/…*args
indef foo(*args):
., ...args
als Restparameter bezeichnet und das Erweitern...args
in ein Funktionsaufruf- / Array- / Objektliteral als Spread bezeichnetAntworten:
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
zux...
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 istIn diesem Fall handelt
args
es sich lediglich um eine Array-Kopie vonarguments
. Splatted-Argumente können entweder vor, nach oder zwischen Standardargumenten stehen: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 erhaltenrest
, 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.
quelle
params
Schlüsselwort C # .console.log('this:',variable,'should be replaced with', another_variable);
Wenn Sie Python kennen,
args...
ähnlich wie Python,*args
können Sie Funktionsparameter als Liste behandelnbeispielsweise:
es funktioniert auch in Assginments:
quelle
Splats ist der Begriff für die Verwendung des
...
Operators für var-args (Funktionen, die eine variable Anzahl von Argumenten annehmen).quelle
Ich denke, es ist ein syntaktischer Zucker für das Argumentobjekt von Javascript.
Die Idee könnte von Rubys Splat-Operator kommen
*
.quelle
(x, rest...) ->
, wirdrest
nicht enthaltenx
,arguments
tut es.