enum = Enumerator.new do |yielder|
n = 0
loop do
yielder.yield(n)
n += 1
end
end
Slide 11
Slide 11 text
fib = Enumerator.new do |yielder|
a = b = 1
loop do
yielder.yield(a)
a, b = b, a + b
end
end
Slide 12
Slide 12 text
module Enumerable
def lazy_map(&block)
Enumerator.new do |yielder|
return to_enum(__method__) unless block_given?
each do |n|
yielder.yield(block.call(n))
end
end
end
end
Slide 13
Slide 13 text
module Enumerable
def lazy_select(&block)
Enumerator.new do |yielder|
return to_enum(__method__) unless block_given?
each do |n|
yielder.yield(n) if block.call(n)
end
end
end
end
Slide 14
Slide 14 text
Ruby 2.0 introduced
Enumerator::Lazy
Slide 15
Slide 15 text
What are the first five even
perfect squares over a thousand?