查看此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可节省大量时间来处理不同数量的参数。

07-24 19:32