コッココッココココココッヒーな脳になってます。
splatsとはこれです。
最大値を返す関数を例にとります。
まずはNode.jsで
> Math.max(1,9,7,4,2,6)
9
> Math.max([1,9,7,4,2,6])
NaN
> Math.max.call(null,1,9,7,4,2,6)
9
> Math.max.apply(null,[1,9,7,4,2,6])
9
これはOKですね。同様にcoffeeでも
coffee> Math.max 1,9,7,4,2,6
9
coffee> Math.max.call @, 1,9,7,4,2,6
9
coffee> Math.max.call null, 1,9,7,4,2,6
9
coffee> Math.max.apply @, [1,9,7,4,2,6]
9
coffee> Math.max.apply null, [1,9,7,4,2,6]
9
coffee> Math.max.apply [1,9,7,4,2,6]
-Infinity
coffee> Math.max.apply()
-Infinity
最後の2つは第一引数にthisもnullも入れてないからですね。
さてsplatsを使います。
coffee> ary = [1,9,7,4,2,6]
coffee> Math.max ary...
9
なんでMath.max @, ary...じゃないのよ?と思ったがエントリ書いてたら理解してしまった。
coffee> Math.max.call @, ary...
9
こういうことね。