2011-02-15 40 views
0

武裝與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

如果你樂於以書面形式緊湊函數式編程,檢查Functional(警告:它採用非面向對象的方法):

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

這感覺就像你正在編寫哈斯克爾;-)

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

如果您正在使用CoffeeScript你可以使用匿名函數寫

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

JavaScript當然沒有塊。