Una de las cosas que comúnmente me engancho en ruby son los patrones de recursión. Por ejemplo, supongamos que tengo una matriz, y que puede contener matrices como elementos a una profundidad ilimitada. Así, por ejemplo:Ruby: Patrones de recurrencia estándar
my_array = [1, [2, 3, [4, 5, [6, 7]]]]
Me gustaría crear un método que puede aplanar la matriz en [1, 2, 3, 4, 5, 6, 7]
.
Soy consciente de que .flatten
haría el trabajo, pero este problema se entiende como un ejemplo de problemas de recurrencia con los que me encuentro regularmente, y como tal, estoy tratando de encontrar una solución más reutilizable.
En resumen: supongo que hay un patrón estándar para este tipo de cosas, pero no se me ocurre nada particularmente elegante. Cualquier idea apreciada
Gracias por la respuesta. Originalmente estaba intentando con una función fuera de una clase, que no llamaría de manera recursiva a item.my_flatten ... pero esto funciona. Cheers – PlankTon
@PlankTon. Escribir my_flatten como una función requiere solo algunos cambios menores en el código anterior. Pero al ser un lenguaje OOP, y 'my_flatten' un algoritmo genérico, tiene sentido agregarlo a Array. – tokland