如何对数组中的数字求和

问题描述 投票:-1回答:2

我试图用函数对数组中的数字求和:

def total(numbers)
 numbers.each do |e|
  total_number = e + total_number
  return total_number
 end
end

puts total([1,2,3,4])

但我不断收到一条错误消息:

nil无法强制进入Fixnum(repl):18:在'+'

谁能看到我做错了什么?

each> do循环在函数之外工作。

ruby
2个回答
5
投票

你还没有初始化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])

但最好的方法是使用ruby内置的数组方法。

array = [1, 2, 3, 4]
total_number = array.inject(:+)

7
投票

有很多不同的方法可以做到:

numbers.sum

numbers.inject(:+)

还有很多其他人。不要害羞下次检查docs;)

© www.soinside.com 2019 - 2024. All rights reserved.