【发布时间】:2019-02-07 01:15:07
【问题描述】:
有没有办法让多个 Enumerable 对象显示为单个 Enumerable 而不将其展平为数组?目前我已经写了一个这样的类,但我觉得必须有一个内置的解决方案。
class Enumerables
include Enumerable
def initialize
@enums = []
end
def <<(enum)
@enums << enum
end
def each(&block)
if block_given?
@enums.each { |enum|
puts "Enumerating #{enum}"
enum.each(&block)
}
else
to_enum(:each)
end
end
end
enums = Enumerables.new
enums << 1.upto(3)
enums << 5.upto(8)
enums.each { |s| puts s }
作为一个简单的例子,它需要能够接受像这样的无限枚举器。
inf = Enumerator.new { |y| a = 1; loop { y << a; a +=1 } };
【问题讨论】:
-
最后一行相当于
inf = 1.step
标签: ruby enumerable