我有两种方法(每种方法输出相同的方法):
def number(array)
array.each do |val1, val2|
(val1 - val2)
end
end
number([[10, 0], [3, 5], [5, 8]])
# => 10, -2, -3
和
def number(array)
array.each do |index|
(index[0] - index[1])
end
end
number([[10, 0], [3, 5], [5, 8]])
# => 10, -2, -3
我想知道如何找到迭代结果的总和。我虽然可以做类似的事情:
(val1 - val2).sum
但这不起作用。
答案 0 :(得分:4)
通常的做法是:
[[10, 0], [3, 5], [5, 8]].inject(0){|sum, (val1, val2)| sum + val1 - val2}
# => 5
答案 1 :(得分:1)
[[10, 0], [3, 5], [5, 8]].map{|elem| elem[0] - elem[1]}.inject{|sum,elem| sum + elem}
答案 2 :(得分:1)
此答案与其他答案相同,只是使用不同的语法。
[[10, 0], [3, 5], [5, 8]].map { |a| a.reduce(:-) }.reduce(:+)