Tecnología

Inicio

Cómo crear una matriz multidimensional en Ruby

Aunque Rubí no proporciona soporte explícito para matrices multidimensionales, puede implementar uno usted mismo si usted tiene un conocimiento básico de la lengua. Debe, en esencia, crear una "matriz de matrices" en la que cada elemento de la matriz tiene otra matriz. Para crear una matriz multidimensional en Ruby, se puede escribir un método utilizado para generar las matrices de matrices lo que el código no tiene que repetirse.

Instrucciones

Crear una matriz multidimensional en Ruby

1 Escribir el esqueleto del método. Este método va a tomar una serie de argumentos dimensión y devolver una matriz multidimensional vacío de esas dimensiones. Por ejemplo, para una matriz de 10x10, llamar a este método mda (10,10):
def mda(width,height)
end

2 Crear una matriz de elementos de anchura.

3 Crear una matriz de elementos de altura para cada elemento de la matriz. Esto hace que el "conjunto de conjuntos" que serán utilizados como una matriz bidimensional. Para crear matrices vacías de una longitud específica, utilice el constructor Array.new con la longitud como argumento. Inicialmente, todos los valores de la matriz serán nulas.

4 Usa el mapa! método también. ¡El mapa! iteración del método cada elemento de una matriz, se ejecuta un bloque para cada uno y asigna el resultado de la manzana para el elemento de la matriz. El mismo resultado se puede lograr usando un bucle, pero el mapa! método es más concisa:
def mda(width,height)
a = Array.new(width)
a.map! { Array.new(height) }
return a
end

5 Utilice esta matriz con el operador de subíndice (entre corchetes []). Por ejemplo, si has tenido una matriz de 10x10 llamado "a" y quería que el elemento de 7,3, que diría un [7] [3]:
a = mda(10,10)# Fill the array with values
a[7][5] = "a string"
a[2][9] = 23# Retrieve values
puts a[7][5]
puts a[2][9]

6 Aprovechar la capacidad de método "cadena" llama en Ruby. Por ejemplo, el método devuelve una matriz Array.new. Puede encadenar otro método llamado a que llamar a un método en la matriz devuelta. Puesto que usted está encadenando los métodos, y no mediante una instrucción de retorno, que no es necesario el nombre de la variable, ya sea:
def mda(width,height)
Array.new(width).map!{ Array.new(height) }
end

Consejos y advertencias

  • Ruby es muy expresivo. El método MDA puede ser un breve y conciso de una sola línea de código. líneas adicionales y las palabras clave sólo hacen ver el código sea más complicado de lo que realmente es.
  • La instrucción de retorno no es necesario en Ruby. métodos y bloques de Ruby vuelven automáticamente el resultado de la última instrucción ejecutada en el método o bloque.