Come creare un array multidimensionale in Ruby

December 2

Anche se Ruby non fornisce supporto esplicito per gli array multidimensionali, è possibile implementare uno voi stessi se si dispone di una conoscenza di base della lingua. in sostanza, è necessario creare un "array di array", in cui ogni elemento dell'array detiene ancora un altro array. Per creare un array multidimensionale come in Ruby, è possibile scrivere un metodo utilizzato per generare gli array di array in modo che il codice non deve essere ripetuto.

istruzione

Creare un array multidimensionale in Ruby

1 Scrivi scheletro del metodo. Questo metodo adottare una serie di argomenti di quota e restituisce un array multidimensionale vuoto di quelle dimensioni. Ad esempio, per una matrice 10x10, chiamare questo metodo MDA (10,10):
def mda(width,height)
end

2 Creare un array di elementi di larghezza.

3 Creare un array di elementi di altezza per ogni elemento della matrice. Questo rende il "array di array" che verranno utilizzati come una matrice bidimensionale. Per creare array vuoti di una lunghezza specifica, utilizzare il costruttore Array.new con la lunghezza come argomento. Inizialmente, tutti i valori nella matrice sarà pari a zero.

4 Utilizza la mappa! Metodo pure. La mappa! Metodo itera ogni elemento di un array, corre un blocco per ogni uno e assegna il risultato del blocco per l'elemento dell'array. Lo stesso risultato può essere ottenuto utilizzando un ciclo, ma la mappa! metodo è più concisa:
def mda(width,height)
a = Array.new(width)
a.map! { Array.new(height) }
return a
end

5 Utilizzare questa matrice con l'operatore pedice (tra parentesi quadre []). Ad esempio, se si ha una matrice 10x10 chiamato "a" e voleva l'elemento 7,3, si potrebbe dire una [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 Sfruttate l'abilità di metodo di "catena" chiama in Ruby. Ad esempio, il metodo Array.new restituisce un array. È possibile concatenare un altro metodo di chiamata su quella di chiamare un metodo sulla matrice restituita. Dal momento che si sta concatenamento i metodi, e non utilizzando un'istruzione di ritorno, non è necessario il nome della variabile sia:
def mda(width,height)
Array.new(width).map!{ Array.new(height) }
end

Consigli e avvertenze

  • Ruby è molto espressivo. Il metodo MDA può essere una linea breve e concisa unico codice. linee supplementari e le parole chiave solo rendono il codice aspetto più complicato di quello che realmente è.
  • L'istruzione return non è necessario in Ruby. Metodi e blocchi rubino ritornano automaticamente il risultato dell'ultima istruzione eseguita nel metodo o blocco.