我想與功能的陣列來概括的數字:如何總結數字陣列中的
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