在下面的代码中,arr 表示一个二维数组,例如[[1,2],[4,5]]
。它计算子数组元素的总和。一个子数组只能有一个元素,在这种情况下,总和就是那个元素。
def compute(arr)
return nil unless arr
arr.map { |(a, b)| !b.nil? ? a + b : a }
end
为什么代码必须是|(a, b)|
而不是|a,b|
?
(a,b)
在 Ruby 中是什么意思?
最佳答案
你也可以使用|a,b|
,它和|(a,b)|
没什么不同。
也可以改写如下代码,子数组没有元素个数限制:
arr.map { |a| a.inject{ |sum,x| sum + x } }
甚至:
arr.map { |a| a.inject(:+) }
关于ruby - 为什么我不能使用 |a,b|而不是 |(a,b)|在 arr.map { |(a, b)| !b.nil? ?一个 + b : a }?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345067/