简化Ruby方法:去掉不必要的变量

3
当我在Ruby中编写方法时,我经常会想,“我敢打赌这可以更简单地解决”。这里有一个示例方法。它将从1开始的所有数字相加,直到数字n。有没有办法省略变量solution
def sum n
    solution = 0
    for i in 1..n do
        solution += i
    end
    solution
end
2个回答

11

我认为**(1..10).inject(:+)**。 - rejin
3
在Ruby中,您可以省略括号,除非表达式存在歧义。 - falsetru

2

falsetru是sum的缩写。但是为了让你更好地理解,inject通常看起来更像这样:

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

在这个例子中,块的结果被反馈为 result,随着每次迭代,它会累加总和。 inject 非常灵活,但还有很多其他迭代器可以帮助你避免管理计数变量。首先查找 timeseachmap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接