Embora Ruby não forneça suporte explícito para arrays multidimensionais, você pode implementar um se tiver conhecimento básico da linguagem. Você deve essencialmente criar um "array de arrays" no qual cada elemento do array contém outro array. Para criar tal 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.
Escreva o esqueleto do método. Este método receberá um número de argumentos de dimensão e retornará um array multidimensional vazio dessas dimensões. Por exemplo, para um array 10x10, chame este método mda(10,10): def mda(width,height) end
Crie um array com elementos de largura (width).
Crie um array com elementos de altura (height) para cada elemento do array. Isso cria o "array de arrays" que será usado como array bidimensional. Para criar arrays vazios de comprimento específico, use o construtor Array.new com o comprimento como argumento. Inicialmente, todos os valores no array serão nil.
Use também o método map!. O método map! 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 alcançado usando um loop for, mas map! é mais conciso: def mda(width,height) a = Array.new(width) a.map! { Array.new(height) } return a end
Use este array com o operador subscrito (colchetes []). Por exemplo, se você tivesse um array 10x10 chamado "a" e quisesse o elemento 7,3, diria a[7][3]: a = mda(10,10) # Preencher array com valores a[7][5] = "uma string" a[2][9] = 23 # Recuperar valores puts a[7][5] puts a[2][9]
Aproveite a capacidade de "encadear" chamadas de método em Ruby. Por exemplo, o método Array.new retorna um array. Você pode encadear outra chamada de método para chamar um método no array retornado. Como está encadeando os métodos e não usando return, não precisa do nome da variável: def mda(width,height) Array.new(width).map!{ Array.new(height) } end
Ruby é muito expressivo. O método MDA pode ser uma única linha curta e concisa. Linhas extras e palavras-chave só fazem o código parecer mais complicado do que realmente é. A declaraçã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.
Tecnologia Eletrônica © [www.351231.com]