我有一个方法,将数组(数组)的对角线相加。其工作原理如下(假设中间有1值,这就是为什么在1月底被删除...):如何用惯用的红宝石方法重写方法
def sum_diagonals(grid)
sum = 0
0.upto(grid.size-1) do |i|
sum += grid[i][i]
sum += grid[i][grid.size-1-i]
end
sum-1
end
现在我想用一个代码块改写这个更Ruby的方式在一条线上。我尝试的东西如下:
def sum_diagonals(grid)
(0..grid.size-1).inject(0) {|acc, i| acc += grid[i][i] + grid[i][grid-1-i] }
end
但它说没有将FixNum隐式转换为数组。我知道被计数双倍的1或中间值将被计数两次。但是忽略了我想重写这个方法。有人能告诉我如何优雅地做到这一点?
网格类统计员其对角线可能会更像红宝石像 – Stefan
@Stefan你可以解释如何使用枚举器来创建一个网格类S' –