我总是忘记了reduce
在ruby(https://ruby-doc.org/core/Enumerable.html#method-i-reduce)中的论点,这个论点被称为:
(5..10).reduce { |sum, n| sum + n }
是否存在语言设计原因,为什么首先传递累加器或者它只是一个随意的选择? JS以同样的方式工作。
答案 0 :(得分:1)
这主要是因为你可以做这样的事情:
(5..10).reduce(&:+)
将其扩展为:
(5..10).reduce { |a,b| a.send(:+, b) }
相当于:
(5..10).reduce { |a,b| a + b }
所以这样才有道理。请注意,订单与each_with_object
相反。