有没有一种很好的方法来计算ruby中的范围元素之和

co计算范围总和的好方法是什么?

输入

4..10 

产量

 4 + 5 + 6 + 7 + 8 + 9 + 10 = 49 

您可以在Range对象上使用Enumerable方法,在这种情况下使用Enumerable#inject

 (4..10).inject(:+) #=> 49 

现在,在Ruby 2.4.0中,您可以使用Enumerable#sum

 (4..10).sum #=> 49 
 rng = 4..10 rng.size * (rng.first + rng.last)/2 #=> 49 

这只是算术级数值之和的公式。 另一个例子:

 arr = (1..10).step(3).to_a #=> [1, 4, 7, 10] arr.size * (arr.first + arr.last)/2 #=> 22 

使用Enumerable #reduce :

 range.reduce(0, :+) 

请注意,如果要折叠的范围为空,则需要0作为标识值,否则您将得到nil作为结果。

 (4..10).to_a * " + " + " = 15" #=> 4 + 5 + 6 + 7 + 8 + 9 + 10 = 15 

🙂

是! 🙂

 (1..5).to_a.inject(:+) 

并用于视觉表现

 (1..5).to_a.join("+")+"="+(1..5).inject(:+).to_s