在下面的代码中,arr意味着是一个二维数组,例如[[1,2],[4,5]].它计算子数组元素的总和.子数组只能有一个元素,在这种情况下,sum只是一个元素.
def compute(arr)
return nil unless arr
arr.map { |(a, b)| !b.nil? ? a + b : a }
end
Run Code Online (Sandbox Code Playgroud)
为什么代码必须|(a, b)|代替|a,b|?(a,b)Ruby 中的意思是什么?
你也可以使用|a,b|它,它没什么不同|(a,b)|.
您也可以重写下面的代码,它没有子数组的元素数限制:
arr.map { |a| a.inject{ |sum,x| sum + x } }
Run Code Online (Sandbox Code Playgroud)
甚至:
arr.map { |a| a.inject(:+) }
Run Code Online (Sandbox Code Playgroud)