Una delle cose che di solito vengo catturato in ruby sono i pattern di ricorsione. Ad esempio, supponiamo di avere un array e che possa contenere array come elementi a una profondità illimitata. Così, per esempio:Ruby: schemi di ricorsione standard
my_array = [1, [2, 3, [4, 5, [6, 7]]]]
mi piacerebbe creare un metodo che può appiattire l'array in [1, 2, 3, 4, 5, 6, 7]
.
Sono a conoscenza del fatto che lo .flatten
farebbe il lavoro, ma questo problema è da intendersi come un esempio di problemi di ricorsività a cui mi imbatto regolarmente - e come tale sto cercando di trovare una soluzione più riutilizzabile.
In breve, immagino ci sia un modello standard per questo genere di cose, ma non riesco a trovare nulla di particolarmente elegante. Tutte le idee apprezzato
Grazie per la risposta. Inizialmente provavo con una funzione esterna a una classe, che non chiamava in modo ricorsivo item.my_flatten ... ma questo funziona. Saluti – PlankTon
@PlankTon. Scrivere my_flatten come una funzione richiede solo alcune piccole modifiche al codice sopra. Ma essendo un linguaggio OOP e 'my_flatten' un algoritmo generico, ha senso averlo in Array. – tokland