我永远不记得它是否
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/