<form style="display:inline" action="http://example.com/" method="get">
<button>Button content</button>
</form>
假设我在上面的代码中输入了1 2。 输出将是12。 如何使用此代码进行简单的添加?输出为3
答案 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有更通用的方法来实现它。
您可以使用reduce
或inject
方法
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#map和Enumberable#reduce
的单线程gets.split.map(&:to_i).reduce(:+)