Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी सुपर कीवर्ड का उपयोग कैसे करें

रूबी में सुपर कीवर्ड क्या करता है?

यह मूल वर्ग पर उसी नाम से एक विधि को कॉल करता है जो 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 . के अंदर कहते हैं विधि इसका उपयोग मूल वर्ग पर आवृत्ति चर प्रारंभ करने के लिए किया जा सकता है।

सारांश

आपने रूबी सुपर कीवर्ड . के बारे में जान लिया है , यह क्या है और विभिन्न स्थितियों में यह कैसे काम करता है!

अगर आपको यह लेख अच्छा लगा हो तो आप इस तरह की और सामग्री प्राप्त करने के लिए रूबीगाइड्स न्यूज़लेटर की सदस्यता लेना चाह सकते हैं और अन्य उपयोगी रूबी टिप्स केवल ग्राहकों के लिए उपलब्ध हैं।


  1. रूबी का उपयोग कैसे करें कोई भी, सभी, कोई नहीं और एक

    आज आप 4 एन्यूमरेबल विधियों के बारे में जानेंगे जो आपको तत्वों की एक सरणी, एक हैश, या किसी अन्य ऑब्जेक्ट के खिलाफ सशर्त स्टेटमेंट की जांच करने में मदद करेंगे जिसमें एन्यूमरेबल मॉड्यूल शामिल है। ये 4 विधियाँ या तो true लौटाती हैं या false । सामग्री 1 रूबी ऑल मेथड 2 सभी और खाली सरणी 3 रूबी कोई नही

  1. रूबी ग्रेप विधि का उपयोग कैसे करें (उदाहरण के साथ)

    आइए बात करते हैं grep . के बारे में विधि। यह विधि आपके लिए क्या कर सकती है? आप ग्रेप का उपयोग एरेज़ और रेंज जैसी असंख्य वस्तुओं को फ़िल्टर करने के लिए कर सकते हैं। “लेकिन चुनें पहले से ही ऐसा करता है!” हां, लेकिन grep एक अलग तरीके से काम करता है और यह अलग परिणाम देता है। आइए कुछ उदाहरण देखें।

  1. रूबी मानचित्र विधि का उपयोग कैसे करें (उदाहरण के साथ)

    मैप एक रूबी विधि है जिसका उपयोग आप ऐरे, हैश और रेंज के साथ कर सकते हैं। मानचित्र का मुख्य उपयोग डेटा को ट्रांसफ़ॉर्म करना है। उदाहरण के लिए : स्ट्रिंग्स की एक सरणी को देखते हुए, आप प्रत्येक स्ट्रिंग पर जा सकते हैं और प्रत्येक वर्ण को अपरकेस बना सकते हैं। या यदि आपके पास User . की सूची है ऑब्जेक्