Cómo crear una matriz multidimensional en Ruby

Cómo crear una matriz multidimensional en Ruby. Aunque Ruby no brinda soporte explícito para arreglos multidimensionales, puede implementar uno usted mismo si tiene un conocimiento básico del lenguaje. En esencia, debe crear una "matriz de matrices" en la que cada elemento de la matriz contenga otra matriz. Para crear una matriz multidimensional de este tipo en Ruby, puede escribir un método utilizado para generar las matrices de matrices para que el código no tenga que repetirse.

Crea una matriz multidimensional en Ruby

Paso 1

Escribe el esqueleto del método. Este método tomará una serie de argumentos de dimensión y devolverá una matriz multidimensional vacía de esas dimensiones. Por ejemplo, para una matriz de 10x10, llame a este método mda(10,10):def mda(ancho,alto)end

Paso 2

Cree una matriz de elementos de ancho.

Paso 3

Cree una matriz de elementos de altura para cada elemento de la matriz. Esto crea la "matriz de matrices" que se usará como una matriz bidimensional. Para crear arreglos vacíos de una longitud específica, use el constructor Array.new con la longitud como argumento. Inicialmente, todos los valores de la matriz serán nulos.

Paso 4

¡Usa el mapa! método también. ¡El mapa! El método itera cada elemento en una matriz, ejecuta un bloque para cada uno y asigna el resultado del bloque al elemento de la matriz. Se puede lograr el mismo resultado usando un ciclo for, pero el mapa! El método es más conciso:def mda(ancho,alto)a =Array.new(ancho)a.map! { Array.new(height) }return aend

Paso 5

Utilice esta matriz con el operador subíndice (corchetes []). Por ejemplo, si tuviera una matriz de 10x10 llamada "a" y quisiera el elemento 7,3, diría a[7][3]:a =mda(10,10)# Complete la matriz con valoresa[7][ 5] ="una cadena"a[2][9] =23# Recuperar valorespone a[7][5]pone a[2][9]

Paso 6

Aproveche la capacidad de "encadenar" llamadas a métodos en Ruby. Por ejemplo, el método Array.new devuelve una matriz. Puede encadenar otra llamada de método a eso para llamar a un método en la matriz devuelta. Como está encadenando los métodos y no está utilizando una declaración de retorno, tampoco necesita el nombre de la variable:def mda(ancho,alto)Array.new(ancho).map!{ Array.new(height) }end

Consejo

Ruby es muy expresivo. El método MDA puede ser una sola línea de código corta y concisa. Las líneas adicionales y las palabras clave solo hacen que el código parezca más complicado de lo que realmente es. La declaración de devolución no es necesaria en Ruby. Los métodos y bloques de Ruby devuelven automáticamente el resultado de la última instrucción ejecutada en el método o bloque.