Cómo crear una matriz multidimensional en Ruby. Aunque Ruby no proporciona soporte explícito para matrices multidimensionales, puede implementar una 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 en Ruby, puede escribir un método utilizado para generar las matrices de matrices para que el código no tenga que repetirse.
Cree una matriz multidimensional en Ruby
Paso 1
Escribe el esqueleto del método. Este método tomará varios 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
Video del día
Paso 2
Crea 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 utilizará como matriz bidimensional. Para crear matrices vacías 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.
Etapa 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 bucle for, ¡pero el mapa! El método es más conciso: def mda (ancho, alto) a = Array.new (ancho) a.map! {Array.new (altura)} return aend
Paso 5
Utilice esta matriz con el operador de subíndice (corchetes []). Por ejemplo, si tuvieras una matriz de 10x10 llamada "a" y quisieras el elemento 7,3, dirías a [7] [3]: a = mda (10,10) # Llena la matriz con valores a [7] [5] = "una cadena" a [2] [9] = 23 # Recuperar valores pone 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 a un método para llamar a un método en la matriz devuelta. Como está encadenando los métodos y no está usando una declaración de retorno, tampoco necesita el nombre de la variable: def mda (ancho, alto) Array.new (ancho) .map! {Array.new (alto)} end
Propina
Ruby es muy expresivo. El método MDA puede ser una sola línea de código breve y concisa. Las líneas y palabras clave adicionales 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 Ruby devuelven automáticamente el resultado de la última instrucción ejecutada en el método o bloque.