私が一般的にルビで使っているのは、再帰パターンです。たとえば、配列を持っていて、配列が無制限の深さの要素として含まれているとします。したがって、たとえば:Ruby:標準的な再帰パターン
my_array = [1, [2, 3, [4, 5, [6, 7]]]]
私は[1, 2, 3, 4, 5, 6, 7]
に、配列を平らにすることができますメソッドを作成したいと思います。
私は.flatten
がその仕事をしていることに気付いていますが、この問題は私が定期的に実行する再帰問題の例として意味されています。したがって、私は再利用可能な解決策を探しています。
簡潔に言えば、このような標準パターンがあると思いますが、特にエレガントなものはありません。すべてのアイデアは、あなたがCのビットを知っていればよく、
http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-flatten
そしてのため..あなただけのドキュメントを訪問し、Cソースを取得するにはルビーの機能をクリックする必要があり、それはすべてそこにある
お返事ありがとうございます。私はもともと、class.my_flattenを再帰的に呼び出さないクラス以外の関数で試していましたが、これはうまくいきます。歓声 – PlankTon
@プレーントン。 my_flattenを関数として書くには、上記のコードを少し変更するだけです。しかし、OOP言語であり、 'my_flatten'はジェネリックアルゴリズムであり、Arrayに追加することを意味します。 – tokland