StopIteration 클래스
StopIteration 클래스
반복(iteration)을 멈추게 하기 위해 던져지는 예외가 StopIteration이에요. 특히 Enumerator#next가 값을 다 꺼내고 나서 반복이 끝났음을 알릴 때 이 예외를 사용해요. 그리고 Kernel#loop는 이 예외를 잡아서 루프를 조용히 끝내주죠.
출처: Ruby 4.0 API
본문
반복을 멈추기 위해 발생하며, 특히 Enumerator#next에서 사용돼요. Kernel#loop가 이 예외를 구해줘요(rescue).
loop do
puts "Hello"
raise StopIteration
puts "World"
end
puts "Done!"
produces:
Hello
Done!
loop 안에서 StopIteration이 올라오면 루프가 그냥 끝나고, "World"는 절대 출력되지 않아요. loop가 StopIteration을 잡아서 정상적으로 종료해 주기 때문이에요.
Public Instance Methods
result → value
반복자(iterator)의 반환값을 돌려줘요.
o = Object.new
def o.each
yield 1
yield 2
yield 3
100
end
e = o.to_enum
puts e.next #=> 1
puts e.next #=> 2
puts e.next #=> 3
begin
e.next
rescue StopIteration => ex
puts ex.result #=> 100
end
each가 마지막에 반환한 100이 StopIteration 예외의 result로 전달되는 걸 볼 수 있어요. 반복이 끝난 뒤에도 마지막 반환값을 알고 싶을 때 유용하죠.