Aunque Rubí no proporciona apoyo explícito a las matrices multidimensionales , puede implementar uno usted mismo si tiene un conocimiento básico del idioma . Usted debe , en esencia, crear una " matriz de matrices " en la que cada elemento de la matriz contiene otra matriz. Para crear una matriz multidimensional como en Ruby , puede escribir un método utilizado para generar las matrices de matrices por lo que el código no tiene que repetirse. Instrucciones
crear una matriz multidimensional en Ruby
1
Escribe el esqueleto del método. Este método se llevará a 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 ( ancho, alto ) end
2
Crear una matriz de elementos de ancho
3
Crear una matriz de elementos de altura para cada elemento de la matriz . Esto hace que la " matriz de matrices " que se utilizarán como una matriz de dos dimensiones . 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 así . El mapa! método itera cada elemento de una matriz , se ejecuta un bloque para cada uno y asigna el resultado del bloque para el elemento de matriz . El mismo resultado se puede lograr utilizando un bucle , pero el mapa ! método es más conciso : def mda ( ancho, alto) a = Array.new (ancho ) a.map ! { Array.new (altura ) } devuelve AEND
5
Utilice esta matriz con el (corchetes [ ] ) operador de subíndice. Por ejemplo , si usted tuviera 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 ) # Llenar la matriz con valuesa [ 7 ] [ ,"5 ] = " una cadena " a [ 2 ] [ 9 ] = 23 # Recuperar valuesputs a [ 7 ] [ 5 ] pone a [2 ] [ 9 ]
6
tomar ventaja de la capacidad de método de "cadena" llama en Ruby. Por ejemplo , el método Array.new devuelve una matriz . Usted puede encadenar otra llamada al método en que para llamar a un método en la matriz devuelta . Puesto que usted es el encadenamiento de los métodos , y no utilizar una sentencia return , que no es necesario el nombre de la variable sea: def mda ( ancho, alto) Array.new (ancho ) mapa { Array.new (altura ) } end . !