查看此CoffeeScript教程:http://jashkenas.github.com/coffee-script/
我不太清楚Splats的用途。这是什么建筑?它来自哪里(历史上)
最佳答案
术语“splat运算符”来自Ruby,其中*
字符(有时称为“splat”,请参阅the Jargon File entry)用于指示参数列表中的条目应“吸收”参数列表。
CoffeeScript很早就采用了Ruby风格的splats(请参阅issue 16),但是在道格拉斯·克罗克福德(Douglas Crockford)的建议下,几周后,语法从*x
更改为x...
(请参阅issue 45)。尽管如此,CoffeeScripter仍将语法称为“splat”或“splat运算符”。
至于它们实际执行的操作,以splats slice arguments
对象,使splatted参数成为所有“额外”参数的数组。最简单的例子是
(args...) ->
在这种情况下,
args
将只是arguments
的数组副本。分散的参数可以在标准参数之前,之后或之间出现:(first, rest...) ->
(rest..., last) ->
(first, rest..., last) ->
在前两种情况下,如果函数接收0-1个参数,则
rest
将为空数组。在最后一种情况下,该函数需要接收两个以上的参数,以使rest
为非空。由于JavaScript不允许具有相同名称的函数使用多个签名(C和Java这样做),因此splats可节省大量时间来处理不同数量的参数。