Ruby Academy · पाठ

Enumerator Objects

बाहरी iteration

पाठ 4, कुल 4 में से13 चरण

Enumerator Objects, CoddyKit पर Ruby Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Ruby Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बाहरी इटरेशन

एक एन्यूमेरेटर ऐसा ऑब्जेक्ट है जो इटरेशन का प्रतिनिधित्व करता है। यह बाहरी इटरेशन का समर्थन करता है: each को ब्लॉक देने के बजाय आप next से एक-एक करके मान लेते हैं।

enum = [10, 20, 30].each
puts enum.next
puts enum.next

एन्यूमेरेटर प्राप्त करना

each जैसी इटरेटर विधि को बिना ब्लॉक के कॉल करें और वह चलने के बजाय एक एन्यूमेरेटर लौटाएगी।

enum = [1, 2, 3].each
puts enum.class

next से मान लेना

हर बार कॉल करने पर next अगला तत्व लौटाता है। एन्यूमेरेटर अपनी स्थिति याद रखता है।

letters = ["a", "b", "c"].each
puts letters.next
puts letters.next
puts letters.next

अंत में StopIteration

जब मान समाप्त हो जाते हैं, तो next StopIteration उत्पन्न करता है। आप इसे पकड़कर इटरेशन को साफ़-सुथरे ढंग से रोक सकते हैं।

enum = [1, 2].each
begin
  loop { puts enum.next }
rescue StopIteration
  puts "done"
end

peek और rewind

peek आगे के मान को बिना स्थिति बदले देखता है; rewind शुरुआत पर लौटाता है।

enum = [5, 6, 7].each
puts enum.peek
puts enum.next
enum.rewind
puts enum.next

कस्टम एन्यूमेरेटर बनाना

अपना एन्यूमेरेटर Enumerator.new से बनाएँ। ब्लॉक को एक मान-प्रदाता y मिलता है; मानों को y << या y.yield से push करें।

evens = Enumerator.new do |y|
  n = 0
  loop do
    y << n
    n += 2
  end
end
puts evens.next
puts evens.next
puts evens.next

अनंत एन्यूमेरेटर

क्योंकि वे मान खींचने पर आधारित होते हैं, कस्टम एन्यूमेरेटर अनंत हो सकते हैं। आप केवल उतने ही मान लेते हैं जितने आवश्यक हों।

counter = Enumerator.new do |y|
  i = 1
  loop { y << i; i += 1 }
end
p counter.first(5)

एन्यूमेरेटर Enumerable होते हैं

एक एन्यूमेरेटर में Enumerable शामिल होता है, इसलिए सामान्य विधियाँ (map, select, take) भी काम करती हैं और आंतरिक तथा बाहरी इटरेशन को मिलाया जा सकता है।

fib = Enumerator.new do |y|
  a, b = 0, 1
  loop do
    y << a
    a, b = b, a + b
  end
end
p fib.take(8)

with_index

with_index किसी भी एन्यूमेरेटर के साथ एक क्रमांक जोड़ता है और वैकल्पिक रूप से किसी कस्टम संख्या से शुरू किया जा सकता है।

["x", "y", "z"].each.with_index(1) do |item, i|
  puts "#{i}: #{item}"
end

each से एन्यूमेरेटर लौटाना

अपनी कक्षाओं में, जब कोई ब्लॉक न दिया गया हो, तो to_enum(:each) (या समकक्ष विधि) लौटाएँ, ताकि कॉल करने वाले बाहरी रूप से इटरेट कर सकें।

class Trio
  def each
    return to_enum(:each) unless block_given?
    yield 1; yield 2; yield 3
  end
end
e = Trio.new.each
puts e.next
puts e.next

सब कुछ एक साथ जोड़ना

एन्यूमरेटर आपको बारीकी से नियंत्रण देते हैं:

  • next से मान प्राप्त करें, अगला मान देखें या पीछे लौटें।
  • Enumerator.new और एक यील्डर की मदद से अपने एन्यूमरेटर बनाएँ।
  • ये Enumerable होते हैं, इसलिए map/select/take सभी काम करते हैं।
odds = Enumerator.new do |y|
  n = 1
  loop { y << n; n += 2 }
end
p odds.first(4)

त्वरित जाँच

Enumerator ऑब्जेक्ट के बारे में अपनी समझ जाँचें।

पुनरावलोकन

आपने Enumerator ऑब्जेक्ट के बारे में सीखा:

  • next, peek और rewind के ज़रिए बाहरी पुनरावृत्ति।
  • StopIteration समाप्ति का संकेत देता है।
  • Enumerator.new { |y| ... } की मदद से अपने एन्यूमरेटर बनाएँ।
  • ये Enumerable होते हैं और अनंत भी हो सकते हैं।
nums = Enumerator.new { |y| 1.upto(3) { |n| y << n } }
puts nums.next
puts nums.next
शुरुआत निःशुल्क

एआई शिक्षक के साथ Ruby सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
29
पाठ
109

अक्सर पूछे जाने वाले प्रश्न

क्या “Enumerator Objects” पाठ निःशुल्क है?

हाँ — Ruby Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Enumerator Objects” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Ruby Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Enumerator Objects” में मैं क्या सीखूँगा?

बाहरी iteration आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Ruby Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Ruby Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Ruby Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Enumerator Objects” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Ruby Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Ruby Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Custom each लिखना
  2. Enumerable शामिल करना
  3. Lazy Enumerators
  4. Enumerator Objects
← Ruby Academy पर वापस जाएँ