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
na x...
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 jest
(args...) ->
W tym przypadku args
będzie to po prostu kopia tablicy arguments
. Splatted argumenty mogą występować przed, po lub między standardowymi argumentami:
(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
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.
arguments
+call
: stackoverflow.com/questions/17380315/…