>> Tecnologia eletrônica >  >> Lar inteligente >> Vida Inteligente

Como criar uma matriz 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. Você deve, em essência, criar uma "matriz de matrizes" na qual cada elemento da matriz contém ainda 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

Etapa 1


Escreva o esqueleto do método. Esse método receberá vários argumentos de dimensão e retornará uma matriz multidimensional vazia dessas dimensões. Por exemplo, para um array 10x10, chame este método mda(10,10):def mda(width,height)end

Etapa 2


Crie uma matriz de elementos de largura.

Etapa 3


Crie uma matriz de elementos de altura para cada elemento na matriz. Isso faz com que o "array de arrays" seja usado como um array bidimensional. Para criar arrays vazios de um comprimento específico, use o construtor Array.new com o comprimento como argumento. Inicialmente, todos os valores na matriz serão nulos.

Etapa 4


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

Etapa 5


Use esta matriz com o operador subscrito (colchetes []). Por exemplo, se você tivesse um array 10x10 chamado "a" e quisesse o elemento 7,3, você diria a[7][3]:a =mda(10,10)# Preencha o array com valoresa[7][ 5] ="uma string"a[2][9] =23# Recuperar valoresputs a[7][5]puts 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 de retorno, também não precisa do nome da variável:def mda(width,height)Array.new(width).map!{ Array.new(height) }end

Dica


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