Olhando para este tutorial do CoffeeScript: http://jashkenas.github.com/coffee-script/
Não vejo bem para que serve o Splats. Que construção é essa? De onde vem (historicamente)
javascript
coffeescript
interstar
fonte
fonte
arguments
+call
: stackoverflow.com/questions/17380315/…*args
lugardef foo(*args):
., ...args
é denominado parâmetros de descanso e a expansão...args
em uma chamada de função / array / objeto literal é denominado spreadRespostas:
O termo "operador splat" vem do Ruby, onde o
*
caractere (às vezes chamado de "splat" - consulte a entrada Jargon File ) é usado para indicar que uma entrada em uma lista de argumentos deve "absorver" uma lista de argumentos.CoffeeScript adotou splats no estilo Ruby muito cedo (consulte a edição 16 ), mas por sugestão de Douglas Crockford, a sintaxe foi alterada
*x
parax...
algumas semanas depois (consulte a edição 45 ). Mesmo assim, os CoffeeScripters ainda se referem à sintaxe como "operador splat" ou "splat".Quanto ao que eles realmente fazem, os splats cortam o
arguments
objeto de tal forma que o argumento splat torna-se um array de todos os argumentos "extras". O exemplo mais trivial éNesse caso,
args
será simplesmente uma cópia do arrayarguments
. Os argumentos divididos podem vir antes, depois ou entre os argumentos padrão:Nos primeiros dois casos, se a função receber 0-1 argumentos,
rest
será um array vazio. No último caso, a função precisa receber mais de 2 argumentos pararest
não ficar vazia.Uma vez que o JavaScript não permite várias assinaturas para funções com o mesmo nome (como fazem C e Java), os splats economizam muito tempo para lidar com vários números de argumentos.
fonte
params
palavra-chave C # .console.log('this:',variable,'should be replaced with', another_variable);
se você conhece python,
args...
aproximadamente semelhante a*args
, pois permite que você trate os parâmetros de função como uma listapor exemplo:
ele funciona em atribuições também:
fonte
Splats é o termo para o uso do
...
operador para var-args (funções que recebem um número variável de argumentos).fonte
Eu acho que é um açúcar sintático para o objeto de argumentos do javascript.
A ideia pode surgir do operador splat
*
de ruby .fonte
(x, rest...) ->
,rest
wont containx
,arguments
does.