29 02 2012 coffeescript Tweet
コッココッココココココッヒーな脳になってます。
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
こういうことね。