2
Michael Harrison在lazy enumerators in Ruby上有很棒的帖子,提供了lazy_select
和lazy_map
的實現。我想知道lazy_flatten
的下列實現是否應該對Enumerator
和Enumerable
類型以外的任何其他類型進行特殊處理。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