为什么减少它们的顺序?

时间:2018-04-25 19:35:41

标签: ruby

我总是忘记了reduce在ruby(https://ruby-doc.org/core/Enumerable.html#method-i-reduce)中的论点,这个论点被称为:

(5..10).reduce { |sum, n| sum + n }

是否存在语言设计原因,为什么首先传递累加器或者它只是一个随意的选择? JS以同样的方式工作。

1 个答案:

答案 0 :(得分:1)

这主要是因为你可以做这样的事情:

(5..10).reduce(&:+)

将其扩展为:

(5..10).reduce { |a,b| a.send(:+, b) } 

相当于:

(5..10).reduce { |a,b| a + b }

所以这样才有道理。请注意,订单与each_with_object相反。