用ruby样式块替换函数

时间:2011-02-15 07:33:43

标签: javascript ruby underscore.js

武装underscore,我可以获得如下所示的精彩内容:

_([1,2,3]).chain().map(function(n) {return n*2}).reduce(function(m,a) {return m +a},0).value()

显然,最详细的部分是function的定义。它会更简单吗?类似的东西:

 _([1,2,3]).chain().map( {|n| return n*2} ).reduce({|m,a| return m+2; },0).value()

2 个答案:

答案 0 :(得分:2)

如果您喜欢编写紧凑的函数式编程,请检查Functional(请注意:它采用非OOP方法):

JS> reduce('+', 0, map('*2', [1, 2, 3]))
12

感觉就像你在写Haskell一样; - )

Haskell> foldl (+) 0 (map (*2) [1, 2, 3])
12

答案 1 :(得分:1)

如果你使用CoffeeScript,你可以写

_([1,2,3]).chain().map((n) -> n*2).reduce((m,a) -> m+2, 0).value()

使用匿名函数。

JavaScript当然没有块。

相关问题