Apesar de Ruby não fornecer suporte explícito para arrays multidimensionais , você pode implementar um a si mesmo se você tiver um conhecimento básico da língua . Você deve , em essência, criar um " array de arrays ", em que cada elemento da matriz contém ainda um outro array. Para criar uma matriz multidimensional como em Ruby, você pode escrever um método usado para gerar os arrays de arrays para que o código não tem que ser repetido. Instruções
Criar uma matriz multidimensional em Ruby
1
Escreva o esqueleto do método. Este método vai tomar uma série de argumentos de dimensão e retornar um array multidimensional vazio dessas dimensões . Por exemplo, para uma matriz 10x10, chamar esse método mda (10,10) : def mda ( largura, altura ) end
2
Criar uma matriz de elementos de largura
< . br> 3
Criar uma matriz de elementos de altura para cada elemento da matriz. Isso faz com que a " matriz de matrizes " que vai ser utilizado como uma matriz bidimensional . Para criar matrizes vazias de um comprimento específico , use o construtor Array.new com o comprimento como um argumento. Inicialmente, todos os valores na matriz será nulo .
4
Use o mapa ! método bem . O mapa ! método itera cada elemento em uma matriz , executa um bloco para cada um e atribui o resultado do bloco para o elemento da matriz. O mesmo resultado pode ser conseguido utilizando um loop , mas o mapa ! método é mais conciso : def mda ( largura, altura ) a = Array.new (largura) a.map ! { Array.new (altura) } retornar AEnD
5
Utilize este array com o índice ( entre colchetes []) operador. Por exemplo , se você tivesse uma matriz 10x10 chamado de " a" e queria que o elemento 7,3 , você diria que um [7 ] [3] : a = mda (10,10) # Preencha a matriz com valuesa [7] [ ,"5] = "a string" a [2 ] [9] = 23 # Recupera valuesputs um [7 ] [5] coloca um [2] [ 9]
6
Aproveite a capacidade de método de " cadeia " chama em ruby. Por exemplo , o método Array.new retorna uma matriz . Você pode encadear uma outra chamada de método para que chamar um método na matriz retornada . Desde que você está acorrentando os métodos , e não usando uma instrução de retorno , você não precisa o nome da variável ou: mda def (largura , altura) Array.new (largura) mapear { Array.new (altura) } end . !