我想与功能的阵列来概括的数字:如何总结数字阵列中的
def total(numbers)
numbers.each do |e|
total_number = e + total_number
return total_number
end
end
puts total([1,2,3,4])
但我不断收到错误消息说:
零不能被强制到Fixnum(repl):18:在'+'
任何人都可以看到我做错了什么?
each> do循环在函数外部工作。
我想与功能的阵列来概括的数字:如何总结数字阵列中的
def total(numbers)
numbers.each do |e|
total_number = e + total_number
return total_number
end
end
puts total([1,2,3,4])
但我不断收到错误消息说:
零不能被强制到Fixnum(repl):18:在'+'
任何人都可以看到我做错了什么?
each> do循环在函数外部工作。
您还没有初始化total_number
变量,所以它给这个错误,试试这个
def total(numbers)
total_number = 0
numbers.each do |e|
total_number += e # Same as your total_number = e + total_number
end
return total_number
end
puts total([1,2,3,4])
但是,最好的办法是使用红宝石内置数组的方法。
array = [1, 2, 3, 4]
total_number = array.inject(:+)
另一件事最初是错误的,但是在这个答案中已经修复了return语句的位置。它在循环中,所以函数在第一次迭代中返回,只产生数组的第一个数字。 –
'return'在这里不需要 –
这会解决这个问题,虽然我会说@AlexGolubenko有这样做的正确方法。没有必要重新发明轮子,无论这个方法可能微不足道。 – SRack
'total_number'最初是'nil',所以你有'total_number = e + nil'。你可能想在循环之后返回,而不是在循环之内。 – Stefan