2015-10-01 3 views
5

शीर्षक राज्यों के रूप में, मैं यह जांचने का उचित तरीका जानना चाहता हूं कि एक इटरेटर पूरा हो गया है या नहीं।एक इटरेटर पूरा होने पर जांचने का सही तरीका क्या है?

मैं डॉक्स में कुछ भी नहीं मिला है, लेकिन मैं source में कुछ इस तरह चला:

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 

यह सही और उचित है या एक अलग है जिस तरह से मुझे उपयोग करना चाहिए।

उत्तर

3

हाँ, यह सही तरीका है। लेकिन अधिकांश समय आपको next से निपटने की आवश्यकता नहीं है, तो आप केवल श्रृंखला इटरेटर्स को चेन करते हैं और उनमें से परिणाम प्राप्त करते हैं।

+1

धन्यवाद। अभी मैं बस कुछ कोड पोर्ट कर रहा हूं और इसलिए मैं जितना संभव हो सके प्रत्यक्ष रूपांतरण कर रहा हूं और बाद में रिफैक्टर की संभावना होगी। –

संबंधित मुद्दे