我希望能优化以下代码,使其更加简洁。
假设
x1.each { |x|
x2.each { |y|
....
xN.each { |z|
yield {}.merge(x).merge(y)...... merge(z)
}
}
}
假设
x1, x2, ..., xN
是枚举器对象。
- 上述内容不够简洁明了。
- 它适用于作为
Array
的x1、x2,但不适用于作为Enumerator
的x1、x2。- 因为枚举器迭代器应该在内部循环中重置。
我尝试了这个但没有成功:
[x1, x2, ..., xN].reduce(:product).map { |x| x.reduce :merge }
您有什么建议吗?
更新
目前解决方案为:
[x1, x2, ..., xN].map(:to_a).reduce(:product).map { |x|
yield x.flatten.reduce(:merge)
}
x1.product(x2,.,xn).each { |hash,elem| elem.reduce({},:merge) }
可能有效... - Arup Rakshit[x1, x2, ..., xN].reduce(:product).map { |x| x.reduce :merge }
- AlexEnumerator
实例上未定义product
。 - Neil Slater