我正在尝试对数组值求和。这是我的代码:
def addArray(array)
for i in array do
sum += i
end
end
addArray([1,3,6,8,7,10]);
这个思考过程出了什么问题?
我知道还有其他方法可以做到这一点,例如使用reduce
甚至是sum
,但我不是每次迭代都向sum
添加下一个值吗?
答案 0 :(得分:2)
您的问题是您没有定义变量sum
。为了继续您选择的方法,请定义变量并在求和后返回:
def add_array(array)
sum = 0
for i in array do
sum += i
end
sum
end
puts add_array([1,3,6,8,7,10])
答案 1 :(得分:0)
正如其他人提到的那样,您尚未定义sum
变量。
但是,我觉得值得指出的是,现有的Ruby方法可以完美地处理此问题:
[1,3,6,8,7,10].reduce(:+) # => 35
对于Ruby 2.4及更高版本(或Rails),它更加容易:
[1,3,6,8,7,10].sum # => 35
reduce
是一种用于在存在累加器的情况下循环访问值的方法。以上是以下各项的简写:
# `accumulator` is the equivalent of your `sum`, `element` your `i`
[1,3,6,8,7,10].reduce(0) do |accumulator, element|
accumulator + element
end
答案 2 :(得分:0)
def addArray(array)
array.sum
end
我认为这是最简单的答案。