對不起新手問題。我試圖在ruby中創建一個二維數組,並將它的所有值初始化爲1.我的代碼創建了二維數組,但未能修改其任何值。修改二維紅寶石陣列的難度
任何人都可以解釋我做錯了什麼?
def mda(width,height)
#make a two dimensional array
a = Array.new(width)
a.map! { Array.new(height) }
#init all its values to 1
a.each do |row|
row.each do |column|
column = 1
end
end
return a
end
'寬度'和'高度'混合在一起嗎?此外,這可以做到沒有塊:Array.new(height,Array.new(width,1)) – steenslag 2010-10-25 08:08:16
@steenslag,不,它不能。如果您以這種方式構建多維數組,則當您將值分配給其中的一個元素時,它將會擴展到整個列。這就像'array = [[1] * w] * h',你只需要將*指針的'h'拷貝到同一個一維數組中。關於「寬度」和「高度」的混合 - 這是另一個問題,這不應該由作者討論。 – Nakilon 2010-10-25 08:28:39
P.S.:看到ghostdog74的回答。它必須至少有一個塊。 – Nakilon 2010-10-25 08:37:06