Come creare un array multidimensionale in Ruby
Come creare una matrice multidimensionale in Ruby. Sebbene Ruby non fornisca un supporto esplicito per gli array multidimensionali, puoi implementarne uno tu stesso se hai una conoscenza di base del linguaggio. In sostanza, devi creare una "matrice di array" in cui ogni elemento dell'array contiene ancora un altro array. Per creare un tale array multidimensionale in Ruby, puoi scrivere un metodo utilizzato per generare gli array di array in modo che il codice non debba essere ripetuto.
Crea un array multidimensionale in Ruby
Passaggio 1
Scrivi lo scheletro del metodo. Questo metodo prenderà un numero di argomenti di dimensione e restituirà una matrice multidimensionale vuota di tali dimensioni. Ad esempio, per un array 10x10, chiama questo metodo mda(10,10):def mda(width,height)end
Passaggio 2
Crea una matrice di elementi di larghezza.
Passaggio 3
Crea una matrice di elementi altezza per ogni elemento della matrice. Questo crea la "matrice di matrici" che verrà utilizzata come matrice bidimensionale. Per creare matrici vuote di una lunghezza specifica, utilizzare il costruttore Array.new con la lunghezza come argomento. Inizialmente, tutti i valori nell'array saranno nulli.
Passaggio 4
Usa la mappa! anche il metodo. La mappa! il metodo itera ogni elemento in un array, esegue un blocco per ognuno e assegna il risultato del blocco all'elemento dell'array. Lo stesso risultato può essere ottenuto utilizzando un ciclo for, ma la mappa! il metodo è più conciso:def mda(larghezza,altezza)a =Array.new(larghezza)a.map! { Array.new(height) }return aend
Passaggio 5
Utilizzare questa matrice con l'operatore pedice (parentesi quadre []). Ad esempio, se avessi un array 10x10 chiamato "a" e volessi l'elemento 7,3, diresti a[7][3]:a =mda(10,10)# Riempi l'array con valuesa[7][ 5] ="una stringa"a[2][9] =23# Recupera valori inserisce a[7][5]mette a[2][9]
Passaggio 6
Sfrutta la possibilità di "concatenare" le chiamate di metodo in Ruby. Ad esempio, il metodo Array.new restituisce una matrice. È possibile concatenare un'altra chiamata al metodo per chiamare un metodo sull'array restituito. Poiché stai concatenando i metodi e non stai usando un'istruzione return, non hai nemmeno bisogno del nome della variabile:def mda(width,height)Array.new(width).map!{ Array.new(height) }end
Suggerimento
Ruby è molto espressivo. Il metodo MDA può essere una singola riga di codice breve e concisa. Righe e parole chiave aggiuntive fanno sembrare il codice più complicato di quanto non sia in realtà. La dichiarazione di reso non è necessaria in Ruby. I metodi ei blocchi di Ruby restituiscono automaticamente il risultato dell'ultima istruzione eseguita nel metodo o nel blocco.