2
Michael Harrison은 lazy enumerators in Ruby에 대한 글을 올리며 lazy_select
및 lazy_map
의 구현을 제공합니다. 다음 구현 lazy_flatten
이 Enumerator
및 Enumerable
유형 이외의 특수 처리를 수행해야하는지 궁금합니다. 당신은 여전히 아래 세 (비 지연) flatten
을 수행으로Ruby 열거 자 기반의 지연 평등 방법
class Enumerator
def lazy_flatten
Enumerator.new do |yielder|
self.each do |value|
if value.kind_of? Enumerator
value.lazy_flatten.each do |v|
yielder.yield v
end
elsif value.kind_of? Enumerable
value.flatten.each do |v|
yielder.yield v
end
else
yielder.yield value
end
end
end
end
end