Comment déclarer un tableau à deux dimensions en Ruby

Je veux un deux dimensions de la matrice en Ruby, que je puisse y accéder, par exemple comme ceci:

if @array[x][y] == "1" then @array[x][y] = "0"

Le problème est: je ne connais pas les montants initiaux des dimensions du tableau et je serai le tableau (avec le << opérateur).

Comment dois-je le déclarer comme une variable d'instance, si je n'obtiens pas d'erreur de ce genre?

undefined method `[]' for nil:NilClass (NoMethodError)

QUESTION À JOUR LE:

@array = Array.new {Array.new} 

travaille maintenant pour moi, si le commentaire de Matt ci-dessous est correct!

Je viens de trouver la raison pour laquelle j'ai reçu le message d'erreur était que je itéré le tableau comme ceci:

for i in 0..@array.length
    for j in 0..@array[0].length
        @array[i][j] ...

qui était évidemment faux et produit l'erreur. Il doit être comme ceci:

for i in 0..@array.length-1
        for j in 0..@array[0].length-1
            @array[i][j] ...
Ruby utilise le typage dynamique-de sorte que vous n'avez pas besoin de "déclarer" qu'une variable est un tableau à deux dimensions à l'avant. Ce que vous pouvez faire est de créer une variable et initialiser un tableau. Ensuite, commencer à mettre des tableaux à l'intérieur d'elle.
pour array = Array.nouveau {Array.nouveau} doivent être modifiés pour tableau = Array.nouveau(3) {Tableau.nouveau(2)},doivent avoir le chiffre à l'intérieur

OriginalL'auteur kadrian | 2012-02-04