Nwlapcug.com


Come creare una matrice multidimensionale in Ruby

Anche se Ruby non fornisce supporto esplicito per le matrici multidimensionali, è possibile implementare uno voi stessi se avete una conoscenza di base della lingua. In sostanza, è necessario creare una "matrice di matrici", in cui ogni elemento della matrice contiene ancora un'altra matrice. Per creare tali una matrice multidimensionale in Ruby, è possibile scrivere un metodo utilizzato per generare le matrici di matrici, quindi il codice non deve essere ripetuto.

Istruzioni

Creare una matrice multidimensionale in Ruby

1

Scrivere lo scheletro del metodo. Questo metodo accetta un numero di argomenti di dimensione e restituirà una matrice multidimensionale vuota di quelle dimensioni. Ad esempio, per un array di 10 x 10, è possibile chiamare questo metodo mda(10,10):
def mda(width,height)
end

2

Creare una matrice di elementi di larghezza.

3

Creare una matrice di elementi di altezza per ogni elemento della matrice. Questo rende la "matrice di matrici" che verrà utilizzata come una matrice bidimensionale. Per creare matrici vuote di una lunghezza specifica, utilizzare il costruttore di Array.new con la lunghezza come argomento. Inizialmente, tutti i valori nella matrice sarà nullo.

4

Usa la mappa! Metodo pure. La mappa! Metodo scorre ogni elemento in una matrice, viene eseguito un blocco per ogni uno e assegna il risultato del blocco all'elemento della matrice. Lo stesso risultato può essere raggiunto utilizzando un ciclo, ma la mappa! Metodo è più conciso:
def mda(width,height)
a = Array.new(width)
a.map! { Array.new(height) }
return a
end

5

Utilizzare questa matrice con l'operatore di indice ([] parentesi quadre). Ad esempio, se tu avessi un array di 10 x 10 chiamato "a" e voleva l'elemento 7,3, si direbbe 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

Sfruttare la possibilità di chiamate al metodo "catena" di Ruby. Ad esempio, il metodo Array.new restituisce una matrice. È possibile concatenare un'altra chiamata di metodo su che per chiamare un metodo su matrice restituita. Poiché si stanno concatenamento i metodi, e non si utilizza un'istruzione return, non serve la variabile nome sia:
def mda(width,height)
Array.new(width).map!{ Array.new(height) }
end

Consigli & Avvertenze

  • Ruby è molto espressivo. Il metodo MDA può essere una breve e concisa singola riga di codice. Parole chiave e linee extra solo rendono codice sembrare più complesso di quello che realmente è.
  • L'istruzione return non è necessario in Ruby. Blocchi e metodi rubino riprendono automaticamente il risultato dell'ultima istruzione eseguita nel metodo o blocco.