タイトルにある通り、イテレータが完了しているかどうかを確認する適切な方法を知りたいです。
ドキュメントには何も見つかりませんでしたが、ソースに次のようなものが見つかりました。
iter.next.is_a? Iterator::Stop
おもちゃの例:
a = "a世c"
b = a.each_char
puts b.next # a
puts b.next # 世
puts b.next # c
puts b.next # #<Iterator::Stop:0x8ccbff8>
if b.next.is_a? Iterator::Stop
puts "DONE" # successfully prints DONE
end
これは正しくて適切ですか、それとも別の方法がありますか。