Patrząc na ten samouczek CoffeeScript: http://jashkenas.github.com/coffee-script/
Nie bardzo rozumiem, do czego służą ikony Splats. Co to za konstrukcja? Skąd się to wzięło (historycznie)
javascript
coffeescript
interstar
źródło
źródło
arguments
+call
: stackoverflow.com/questions/17380315/…*args
wdef foo(*args):
., ...args
nosi nazwę parametrów reszta, a rozszerzenie...args
do wywołania funkcji / tablicy / literału obiektu nosi nazwę spreadOdpowiedzi:
Termin „operator splat” pochodzi z języka Ruby, gdzie
*
znak (czasami nazywany „ikoną” - patrz pozycja pliku żargonu ) jest używany do wskazania, że wpis na liście argumentów powinien „wchłonąć” listę argumentów.CoffeeScript bardzo wcześnie zaadaptował ikony w stylu Ruby (zobacz numer 16 ), ale zgodnie z sugestią Douglasa Crockforda składnia została zmieniona z
*x
nax...
kilka tygodni później (zobacz numer 45 ). Niemniej jednak CoffeeScripters nadal odwołuje się do składni jako operatora „splat” lub „splat”.Co do tego, co faktycznie robią, ikony
arguments
dzielą obiekt w taki sposób, że splatowany argument staje się tablicą wszystkich „dodatkowych” argumentów. Najbardziej trywialnym przykładem jestW tym przypadku
args
będzie to po prostu kopia tablicyarguments
. Splatted argumenty mogą występować przed, po lub między standardowymi argumentami:W pierwszych dwóch przypadkach, jeśli funkcja otrzyma 0-1 argumentów,
rest
będzie pustą tablicą. W ostatnim przypadku funkcja musi otrzymać więcej niż 2 argumenty,rest
aby nie była pusta.Ponieważ JavaScript nie zezwala na wiele podpisów dla funkcji o tej samej nazwie (tak jak robią to C i Java), ikony splats pozwalają na ogromną oszczędność czasu przy pracy z różną liczbą argumentów.
źródło
params
słowa kluczowego C # .console.log('this:',variable,'should be replaced with', another_variable);
jeśli znasz Pythona, z
args...
grubsza podobny*args
, ponieważ pozwala on traktować parametry funkcji jako listęna przykład:
działa też w zadaniach:
źródło
Splats to termin określający użycie
...
operatora dla zmiennych argumentów (funkcji, które przyjmują zmienną liczbę argumentów).źródło
Myślę, że jest to cukier składniowy dla obiektu arguments JavaScript.
Pomysł może pochodzić od operatora splat
*
Rubiego .źródło
(x, rest...) ->
,rest
nie zawierax
,arguments
nie.