यह सवाल रूबी 1.9.1 में अंकुशकों का उपयोग करने के बारे में नहीं है, बल्कि मैं उत्सुक हूं कि वे कैसे काम करते हैं। यहाँ कुछ कोड है:रूबी 1.9.1 में गणक कैसे काम करते हैं?
class Bunk
def initialize
@h = [*1..100]
end
def each
if !block_given?
enum_for(:each)
else
0.upto(@h.length) { |i|
yield @h[i]
}
end
end
end
उपरोक्त कोड में मैं e = Bunk.new.each
, और फिर e.next
, e.next
उपयोग कर सकते हैं प्रत्येक उत्तरोत्तर तत्व प्राप्त करने के लिए है, लेकिन वास्तव में यह कैसे निष्पादन निलंबित और फिर सही जगह पर शुरू करने की जाती है?
मुझे पता है कि अगर 0.upto
में उपज Fiber.yield
के साथ प्रतिस्थापित की गई है तो यह समझना आसान है, लेकिन यह मामला यहां नहीं है। यह एक सादा पुराना yield
है, तो यह कैसे काम करता है?
मैंने enumerator.c को देखा लेकिन यह मेरे लिए समझ में नहीं आता है। हो सकता है कि कोई व्यक्ति रुबी का उपयोग करके रुबी में कार्यान्वयन प्रदान कर सके, न कि 1.8.6 स्टाइल निरंतरता-आधारित एन्यूमरेटर, जो इसे स्पष्ट करता है?
आपके उत्तर के लिए धन्यवाद। हां, मैं इस पर काफी विस्तार से पूछ रहा हूं। विशेष रूप से मैं जानना चाहता हूं कि रूबी में इसे लागू करना संभव है या क्या सी में कुछ चुपके चल रहा है जो रुबी में संभव नहीं है। यदि रूबी में इसे पूरी तरह कार्यान्वित करना संभव है, तो मुझे कोड देखना अच्छा लगेगा! :) – horseyguy