2
Michael Harrison hat einen großen Beitrag auf lazy enumerators in Ruby, eine Implementierung von lazy_select
und lazy_map
. Ich frage mich, ob die folgende Implementierung von lazy_flatten
spezielle Verarbeitung für etwas anderes als Enumerator
und Enumerable
Typen haben sollte.Ruby Enumerator-basierte Lazy Flatten-Methode
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