2015-10-01 25 views
5

Jak wskazuje tytuł, chciałbym poznać właściwy sposób sprawdzenia, czy iterator jest kompletny.Jaki jest właściwy sposób sprawdzenia, czy Iterator jest kompletny?

nie mogłem znaleźć nic w docs ale znalazłem coś takiego w source: przykład

iter.next.is_a? Iterator::Stop 

zabawki:

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 

czy to jest poprawne i właściwe lub czy istnieje inna sposób powinienem użyć.

Odpowiedz

3

Tak, to właściwy sposób. Ale w większości przypadków nie musisz zajmować się next, po prostu łańcuch iteratory i uzyskać wynik z nich.

+1

Dzięki. Właśnie przesyłam kod, więc robię bezpośrednią konwersję tak bardzo, jak to możliwe, i najprawdopodobniej później zmienię. –