रूबी में सुपर कीवर्ड क्या करता है?
यह मूल वर्ग पर उसी नाम से एक विधि को कॉल करता है जो super . को कॉल करती है ।
उदाहरण के लिए :
यदि आप i_like_chocolate . नामक विधि को कॉल करते हैं , और फिर आप super . को कॉल करते हैं उस पद्धति के भीतर, रूबी इस विधि के मालिक के मूल वर्ग पर उसी नाम के साथ एक और विधि खोजने की कोशिश करेगी।
यह वर्ग वंश श्रृंखला के माध्यम से बुदबुदाती रहती है एक नियमित विधि कॉल की तरह ।
यदि विधि मौजूद नहीं है तो यह एक NoMethodError को ट्रिगर करेगा अपवाद, और यदि कोई method_missing पाया जाता है कि वह इसका उपयोग करेगा।
अब :
आइए कुछ कोड उदाहरण देखें!
बिना तर्क के सुपर
निम्नलिखित उदाहरण में हमारे पास एक Cat है वह वर्ग जो Animal . से विरासत में मिला है ।
Cat कक्षा का एक name है विधि जो super . का उपयोग करती है उसी विधि को उसके मूल वर्ग पर कॉल करने के लिए (Animal )।
यह रहा कोड:
class Animal
def name
puts "Animal"
end
end
class Cat < Animal
def name
super
end
end
cat = Cat.new
cat.name
# "Animal"
रूबी सुपर कीवर्ड जब तर्क के साथ या बिना तर्क के प्रयोग किया जाता है तो अलग व्यवहार करता है ।
बिना तर्क के:
यह मूल विधि कॉल के लिए उपयोग किए गए तर्कों के साथ नई विधि को कॉल करेगा , कीवर्ड तर्क और दिए जाने पर एक ब्लॉक सहित।
यहां एक उदाहरण दिया गया है :
def puts(*) super end puts 1, 2, 3
किसी भी वर्ग के बाहर परिभाषित यह विधि Object . से संबंधित होगी . इसका मतलब है कि इसे मूल puts . से पहले बुलाया जाएगा विधि।
अब:
जब आप puts . को कॉल करते हैं आप हमारे द्वारा बनाई गई इस नई विधि को कॉल कर रहे हैं जो तब super . का उपयोग करती है मूल को कॉल करने के लिए puts ।
सुपर बनाम सुपर () का उपयोग कब करें
हमने अभी देखा कि super . का उपयोग कैसे करें मूल विधियों को कॉल करने के लिए।
लेकिन क्या होगा यदि मूल विधि समान संख्या में तर्क नहीं लेती है?
उस स्थिति में आप इसका उपयोग कर सकते हैं:
super()बिना किसी तर्क केsuper(arg1, arg2, ...)यह चुनने के लिए कि आप किन तर्कों को पारित करना चाहते हैं
उदाहरण :
def puts super() end
ध्यान दें कि कैसे कोष्ठक का यहां विशेष अर्थ है , एक नियमित विधि कॉल के विपरीत।
super के बारे में जानने के लिए कुछ और बातें :
- इसका उपयोग केवल एक विधि के अंदर ही किया जा सकता है
- यह मूल विधि को कॉल करके परिणाम देता है
- इसे कई बार कहा जा सकता है
बोल्ड लाइन (super परिणाम देता है) super . के कुछ उपयोगों को समझने की कुंजी है जो आपको जंगल में मिल जाए।
आप super का उपयोग कर सकते हैं डेकोरेटर पैटर्न को लागू करने के लिए, या यदि आप इसे initialize . के अंदर कहते हैं विधि इसका उपयोग मूल वर्ग पर आवृत्ति चर प्रारंभ करने के लिए किया जा सकता है।
सारांश
आपने रूबी सुपर कीवर्ड . के बारे में जान लिया है , यह क्या है और विभिन्न स्थितियों में यह कैसे काम करता है!
अगर आपको यह लेख अच्छा लगा हो तो आप इस तरह की और सामग्री प्राप्त करने के लिए रूबीगाइड्स न्यूज़लेटर की सदस्यता लेना चाह सकते हैं और अन्य उपयोगी रूबी टिप्स केवल ग्राहकों के लिए उपलब्ध हैं।