简化Ruby方法:关闭不必要的变量

时间:2014-01-18 13:43:01

标签: ruby variables methods dry simplify

当我在Ruby中编写方法时,我常常想“我敢打赌这可以做得更简单”。这是一个示例方法。它会添加从1开始的所有数字,直到数字n。有没有办法省略变量solution

def sum n
    solution = 0
    for i in 1..n do
        solution += i
    end
    solution
end

2 个答案:

答案 0 :(得分:11)

使用Enumerable#inject(或Enumerable#reduce):

(1..10).inject :+
# => 55

答案 1 :(得分:2)

falsetru's是总和的简写答案。但为了您自己的利益而扩展,inject通常看起来更像是这样:

def sum n
  (1..n).inject {|result, i| result + i}
end

在此示例中,块的结果在每次连续迭代时以result反馈,因此它构建累计总数。

inject非常通用,但是还有很多其他迭代器可以帮助您管理计数变量。为初学者查找timeseachmap