试图从数组中求和

时间:2017-04-28 02:00:47

标签: arrays ruby sum integer add

<form style="display:inline" action="http://example.com/" method="get">
  <button>Button content</button>
</form>

假设我在上面的代码中输入了1 2。 输出将是12。 如何使用此代码进行简单的添加?输出为3

4 个答案:

答案 0 :(得分:2)

each不会更改数组。您应该使用map!

a = gets.split(" ").map! {|n| n.to_i}
puts "#{a[0] + a[1]}"

答案 1 :(得分:2)

假设gets返回

s = "21 14     7"

然后使用Array#sum(Ruby v.2.4.0中的新内容):

puts s.split.sum(&:to_i)
42

或使用Enumerable#reduce(又称inject,自时间开始以来可用)

puts s.split.reduce(0) { |t,ss| t+ss.to_i }
42

答案 2 :(得分:1)

虽然接受的答案是正确的,但仅适用于带有两个元素的数组(即使对于包含1个元素的数组,它也会中断)。如果数组大小可变怎么办? Ruby有更通用的方法来实现它。

您可以使用reduceinject方法 documentation

示例代码:

a = gets.split(" ").map! {|n| n.to_i}
puts a.reduce(:+)

如果我输入1 2 3 4 5 6 7,则会输出28

reduce一样,您可以使用

a = gets.split(" ").map! {|n| n.to_i}
puts a.inject(:+)

希望它会对某人有所帮助。

答案 3 :(得分:0)

使用Enumberable#mapEnumberable#reduce

的单线程
gets.split.map(&:to_i).reduce(:+)