This question already has answers here:
How can I make a ruby enumerator that does lazy iteration through two other enumerators?
(3 个回答)
2年前关闭。
说你有:
要明确:我希望返回的结果是另一个
更新
根据链接的副本,实现此目的的方法是:
(3 个回答)
2年前关闭。
说你有:
enum1 = 1.upto(5)
enum2 = 7.upto(10)
我想:enum_combined = enum1.some_method(enum2)
使得:enum_combined.to_a #=> [1, 2, 3, 4, 5, 7, 8, 9, 10]
我在 Enumerator 类上没有看到任何可以执行此操作的方法,但是在推出我自己的解决方案之前,我想确保我没有遗漏一些内置的方法来执行此操作。要明确:我希望返回的结果是另一个
Enumerator
对象,因为我希望整个计算都是惰性的。更新
根据链接的副本,实现此目的的方法是:
combined = [enum1, enum2].lazy.flat_map(&:lazy)
最佳答案
您可以定义一个新的枚举器,遍历现有的枚举器。就像是:
enum = Enumerator.new { |y|
enum1.each { |e| y << e }
enum2.each { |e| y << e }
}
关于ruby - 内置方式连接两个枚举器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46260536/
10-12 07:33