Excusez la question de débutant. J'essaye de créer un tableau bidimensionnel dans ruby, et initialise toutes ses valeurs à 1. Mon code crée le tableau bidimensionnel très bien, mais ne parvient pas à modifier ses valeurs. Est-ce que quelqu'un peut expliquer ce que je fais mal?difficulté à modifier tableau de rubis bidimensionnel
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
Est-ce que 'width' et 'height' sont mélangés? En outre, cela peut être fait sans blocs: Array.new (height, Array.new (width, 1)) – steenslag
@steenslag, Non, il ne peut pas. Si vous créez un tableau multidimensionnel de cette manière, lorsque vous affectez une valeur à un élément, il sera étendu à la colonne entière. Ce serait comme 'array = [[1] * w] * h', où vous allez simplement faire des' h' copies du * pointeur * vers le même tableau à 1 dimension. A propos du mélange de 'width' et' height' - c'est une autre question, qui n'était pas censée être discutée par l'auteur. – Nakilon
P.S.: voir la réponse de ghostdog74. Il doit avoir au moins un bloc. – Nakilon