这只是一个思考练习,我会对任何意见感兴趣。虽然如果它有效,我可以想出几种我会使用它的方法。
传统上,如果您想对由数组或范围等形成的嵌套循环的结果执行函数,您会编写如下内容:
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,其中包含来自可枚举组合的参数?
我很想知道这是否可能,这可能不太可能发生,但在我发生这种情况后我想知道。