Глядя на это руководство по CoffeeScript: http://jashkenas.github.com/coffee-script/
Я не совсем понимаю, для чего нужны Splats. Что это за конструкция? Откуда это взялось (исторически)
javascript
coffeescript
Interstar
источник
источник
arguments
+call
: stackoverflow.com/questions/17380315/…*args
вариантdef foo(*args):
., ...args
называется остальными параметрами, а расширение...args
до литерала вызова функции / массива / объекта называется распространениемОтветы:
Термин «оператор splat» происходит от Ruby, где
*
символ (иногда называемый «splat» - см. Запись в файле жаргона ) используется для обозначения того, что запись в списке аргументов должна «впитывать» список аргументов.CoffeeScript очень рано принял splats в стиле Ruby (см. Выпуск 16 ), но по предложению Дугласа Крокфорда синтаксис был изменен с
*x
наx...
пару недель спустя (см. Выпуск 45 ). Тем не менее, CoffeeScripters по-прежнему называют синтаксис оператором splat или splat.Что касается того, что они на самом деле делают, splats разрезает
arguments
объект таким образом, что аргумент splatted становится массивом всех «дополнительных» аргументов. Самый тривиальный пример:В этом случае это
args
будет просто копия массиваarguments
. Разделенные аргументы могут быть до, после или между стандартными аргументами:В первых двух случаях, если функция получает 0-1 аргументов,
rest
будет пустой массив. В последнем случае функция должна получить более двух аргументов,rest
чтобы быть непустой.Поскольку JavaScript не позволяет использовать несколько подписей для функций с одним и тем же именем (как это делают C и Java), splats значительно экономят время при работе с различным количеством аргументов.
источник
params
ключевому слову C # .console.log('this:',variable,'should be replaced with', another_variable);
если вы знаете python,
args...
примерно так же*args
, как он позволяет обрабатывать параметры функции как списокнапример:
он также работает в заданиях:
источник
Знаки Splats - это термин для использования
...
оператора для var-args (функций, которые принимают переменное количество аргументов).источник
Я думаю, что это синтаксический сахар для объекта аргументов javascript.
Идея может прийти от оператора splat
*
в Ruby .источник
(x, rest...) ->
, неrest
содержитx
,arguments
имеет.