заменить функцию блоком стиля ruby - PullRequest
0 голосов
/ 15 февраля 2011

Вооружившись подчеркиванием , я мог бы достичь чего-то фантастического, как показано ниже:

_([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 ]

2 голосов
/ 15 февраля 2011

Если вы получаете удовольствие от написания компактного функционального программирования, отметьте Функциональное (предостережение: для этого используется не-ООП-подход):

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

Такое ощущение, что вы пишете на Haskell; -)

Haskell> foldl (+) 0 (map (*2) [1, 2, 3])
12
1 голос
/ 15 февраля 2011

Если бы вы использовали CoffeeScript , вы могли бы написать

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

с использованием анонимных функций.

Конечно, в JavaScript нет блоков.

...