errors/stop_iteration/result_parens.rb
tests/_examples/errors/stop_iteration/result_parens.rb in the metorex repository.
class Countdown
def each
yield 3
yield 2
yield 1
:liftoff
end
end
enumerator = Countdown.new.to_enum
puts(enumerator.next)
puts(enumerator.next)
puts(enumerator.next)
begin
enumerator.next
rescue StopIteration => error
puts(error.message)
p error.result
end
enumerator.rewind
puts(enumerator.next)
class NoReturnValue
def each
yield :only
nil
end
end
exhausted = NoReturnValue.new.to_enum
exhausted.next
begin
exhausted.next
rescue StopIteration => error
p error.result
end
p(StopIteration.new("built by hand").result)
Output:
3
2
1
iteration reached an end
:liftoff
3
nil
nil