def sum(arr = [1,2,3,4,5])
addedUp = 0
i = 0
while i < arr.length
addedUP += arr[i]
end
return addedUp
end
目标是定义一个方法 sum(arr),它将整数数组作为参数并返回其元素的总和。出于某种原因,我不断收到
'主:对象的未定义方法'sum'
错误。
ruby 区分大小写,就像@grandinero 提到的那样,您需要增加i
变量
def sum(arr = [1,2,3,4,5])
addedUp = 0
i = 0
while i < arr.length
addedUp += arr[i] #you had addedUP; this was the undefined method error
i += 1 #infinite loop without this
end
return addedUp
end
有更多 ruby 式的方法来求和一个数组
def sum(*arr)
return arr.flatten.inject(0, :+)
end
puts sum(1,2,3,4,5) #=> 15
puts sum([1,2,3,4,5]) #=> 15
我只是准确地输入了您所拥有的内容,但经过i += 1
更正后,它完美无缺。你可能在某个地方有错字。
是的,这里有错字:
def sum(arr = [1,2,3,4,5])
addedUp = 0
i = 0
while i < arr.length
addedUP += arr[i] # <- you have addedUP instead of addedUp, notice the capital P
end
return addedUp
end
如前所述,还有更多“Ruby”方法可以做到这一点。IE:
def sum(arr = [1,2,3,4,5])
x = 0
arr.each do |y|
x += y
end
x #the return is implied in Ruby. Methods return their last result.
end
如上所示,还有更多的 rubyesque 方法,但看起来你是新人,我想让你看看你想说的话如何正确地说出来。我学到的关于 Ruby 的一件事是,如果您认为自己需要某些东西,请查看 API 文档,您可能已经发现它是内置的。请参阅Array的 ruby 文档。