我有一個方法,將數組(數組)的對角線相加。其工作原理如下(假設中間有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' –