これは単なる思考練習であり、どんな意見にも興味があります。それがうまくいくなら、私はそれを使用するいくつかの方法を考えることができます.
従来、配列や範囲などから形成されたネストされたループの結果に対して関数を実行したい場合は、次のように記述します。
def foo(x, y)
# Processing with x, y
end
iterable_one.each do |x|
iterable_two.each do |y|
my_func(x, y)
end
end
ただし、別のレベルのネストを追加する必要があるとしたらどうでしょう。はい、追加レベルのループを追加できます。この時点で、foo が可変数の引数を取るようにしましょう。
def foo(*inputs)
# Processing with variable inputs
end
iterable_one.each do |x|
iterable_two.each do |y|
iterable_three.each do |z|
my_func(x, y, x)
end
end
end
ここで、別のレベルのネストを追加する必要があるとします。この時点で、それはかなり危険になっています。
したがって、私の質問は次のとおりです。以下のようなものを書くことは可能ですか?
[iterable_one, iterable_two, iterable_three].nested_each(my_func)
多分
[iterable_one, iterable_two, iterable_three].nested_each { |args| my_func(args) }
おそらく、引数を実際の引数として渡すことは現実的ではありません。列挙型の組み合わせからのパラメーターを含む配列を my_func に渡すことができますか?
これが可能かどうか知りたいのですが、おそらくシナリオではない可能性がありますが、それが思いついた後、知りたいと思いました.