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 *xna 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 argumentsdzielą obiekt w taki sposób, że splatowany argument staje się tablicą wszystkich „dodatkowych” argumentów. Najbardziej trywialnym przykładem jest
(args...) ->
W tym przypadku argsbę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, restbędzie pustą tablicą. W ostatnim przypadku funkcja musi otrzymać więcej niż 2 argumenty, restaby 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/…