Como criar um array multidimensional em Ruby

Como criar um array multidimensional em Ruby. Embora Ruby não forneça suporte explícito para arrays multidimensionais, você mesmo pode implementar um se tiver um conhecimento básico da linguagem. Em essência, você deve criar uma "matriz de matrizes" em que cada elemento da matriz contenha outra matriz. Para criar um array multidimensional em Ruby, você pode escrever um método usado para gerar os arrays de arrays para que o código não precise ser repetido.

Crie um array multidimensional em Ruby

Passo 1

Escreva o esqueleto do método. Este método pegará vários argumentos de dimensão e retornará uma matriz multidimensional vazia dessas dimensões. Por exemplo, para uma matriz 10x10, chame este método mda (10,10): def mda (largura, altura) end

Vídeo do dia

Passo 2

Crie uma matriz de elementos de largura.

etapa 3

Crie uma matriz de elementos de altura para cada elemento na matriz. Isso cria a "matriz de matrizes" que será usada como uma matriz bidimensional. Para criar matrizes vazias de um comprimento específico, use o construtor Array.new com o comprimento como argumento. Inicialmente, todos os valores da matriz serão nulos.

Passo 4

Use o mapa! método também. O mapa! método itera cada elemento em um array, executa um bloco para cada um e atribui o resultado do bloco ao elemento do array. O mesmo resultado pode ser obtido usando um loop for, mas o mapa! método é mais conciso: def mda (largura, altura) a = Array.new (largura) a.map! {Array.new (height)} return aend

Etapa 5

Use esta matriz com o operador subscrito (colchetes []). Por exemplo, se você tivesse uma matriz 10x10 chamada "a" e quisesse o elemento 7,3, diria a [7] [3]: a = mda (10,10) # Preencha a matriz com os valoresa [7] [5] = "uma string" a [2] [9] = 23 # Recupera valoresputs a [7] [5] coloca a [2] [9]

Etapa 6

Aproveite a capacidade de "encadear" chamadas de método em Ruby. Por exemplo, o método Array.new retorna uma matriz. Você pode encadear outra chamada de método para chamar um método na matriz retornada. Como você está encadeando os métodos e não usando uma instrução return, também não precisa do nome da variável: def mda (largura, altura) Array.new (largura) .map! {Array.new (altura)} end

Dica

Ruby é muito expressivo. O método MDA pode ser uma única linha de código curta e concisa. Linhas e palavras-chave extras apenas fazem o código parecer mais complicado do que realmente é. A instrução de retorno não é necessária em Ruby. Os métodos e blocos Ruby retornam automaticamente o resultado da última instrução executada no método ou bloco.