我永远不记得它是否

array.inject{|memo,obj| block}

或者
array.inject{|obj,memo| block}

有没有人有记住订单的好技巧?

最佳答案

inject/reduce 只不过是 left fold(因此在其他语言中称为 foldl/foldLeft),就是这样,递归 左关联 元素与二元运算符的组合:

(1..5).reduce(:+) == (((1 + 2) + 3) + 4) + 5 #=> true
(1..5).reduce(:-) == (((1 - 2) - 3) - 4) - 5 #=> true

因此,将累加器作为块的左/第一个参数传递是很自然的。在正确的折叠中,累加器将是正确的/第二个参数。

不是真正的助记符,但是一旦您意识到 reduce 是左折叠,您就不会忘记累加器的去向。

关于ruby - 记住如何调用 ruby​​ 注入(inject)的助记符是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16202980/

10-15 17:47