Ruby Language
ूगणकों
खोज…
परिचय
एक Enumerator
एक ऑब्जेक्ट है जो एक नियंत्रित फैशन में पुनरावृत्ति को लागू करता है।
लूपिंग के बजाय जब तक कुछ स्थिति संतुष्ट नहीं होती है, तब तक ऑब्जेक्ट आवश्यकतानुसार मानों को एन्यूमरेट करता है। लूप के निष्पादन को तब तक रोक दिया जाता है जब तक कि ऑब्जेक्ट के मालिक द्वारा अगले मूल्य का अनुरोध नहीं किया जाता है।
Enumerators मूल्यों की अनंत धाराओं को संभव बनाते हैं।
पैरामीटर
पैरामीटर | विवरण |
---|---|
yield | yield जवाब देता yield , जिसे << रूप में उतारा गया है। इस वस्तु की उपज पुनरावृत्ति को लागू करती है। |
कस्टम enumerators
आइए फाइबोनैचि संख्याओं के लिए एक Enumerator
बनाएं।
fibonacci = Enumerator.new do |yielder|
a = b = 1
loop do
yielder << a
a, b = b, a + b
end
end
अब हम किसी भी उपयोग कर सकते हैं Enumerable
साथ विधि fibonacci
:
fibonacci.take 10
# => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
मौजूदा तरीके
यदि एक पुनरावृत्ति विधि जैसे कि each
को बिना किसी ब्लॉक के कहा जाता है, तो एक Enumerator
लौटाया जाना चाहिए।
यह enum_for
विधि का उपयोग करके किया जा सकता है:
def each
return enum_for :each unless block_given?
yield :x
yield :y
yield :z
end
इस रचना के लिए प्रोग्रामर सक्षम बनाता Enumerable
संचालन:
each.drop(2).map(&:upcase).first
# => :Z
रीवाइंड कर रहा है
प्रगणक को पुनरारंभ करने के लिए rewind
का उपयोग करें।
ℕ = Enumerator.new do |yielder|
x = 0
loop do
yielder << x
x += 1
end
end
ℕ.next
# => 0
ℕ.next
# => 1
ℕ.next
# => 2
ℕ.rewind
ℕ.next
# => 0