मेथड्स को कैसे परिभाषित करें
Ruby प्रोग्रामिंग भाषा में कई शक्तिशाली बिल्ट-इन मेथड्स हैं जिनका आप उपयोग कर सकते हैं, लेकिन आप अपने खुद के भी बना सकते हैं।
कैसे?
आप def कीवर्ड का उपयोग करके अपनी खुद की इंस्टेंस मेथड को परिभाषित कर सकते हैं।
यहाँ सिंटैक्स है:
def gimme_bacon puts "Bacon plz." end
यहाँ क्या हो रहा है?
defRuby के सिंटैक्स का हिस्सा है, यह कहता है कि हम एक मेथडdefइन करना चाहते हैंgimme_baconमेथड का नाम हैputs "Bacon plz."मेथड का बॉडी हैendमेथड परिभाषा के अंत को चिह्नित करता है
एक मेथड को परिभाषित करना केवल Ruby को बताता है कि आप इसे बनाना चाहते हैं।
यदि आप इसका उपयोग करना चाहते हैं तो आपको मेथड को कॉल करने की आवश्यकता है।
Ruby में मेथड्स को कैसे कॉल करें
Ruby में, जब हम एक मेथड का उपयोग करते हैं, तो हम कहते हैं कि हम इसे कॉल कर रहे हैं।
आप अक्सर "मेथड कॉल" सुनेंगे, या यदि आप किसी ऐसे व्यक्ति के साथ काम कर रहे हैं जो ऑब्जेक्ट-ओरिएंटेड शुद्धतावादी है, तो आप सुन सकते हैं कि "आप एक संदेश भेज रहे हैं"।
किसी भी तरह...
आइए एक मेथड का उपयोग करने का एक उदाहरण देखें।
यहाँ आप जाएं:
gimme_bacon
यह प्रिंट करता है:
"Bacon plz."
आप ऑब्जेक्ट्स पर मेथड्स कॉल कर सकते हैं।
उदाहरण के लिए:
n = [1,2,3] n.size # 3
यह n.size ऑब्जेक्ट n पर मेथड size को कॉल कर रहा है, जो एक Array होता है।
परिणाम?
हमें एरे का आकार मिलता है।
कौन से मेथड्स उपलब्ध हैं?
यह उस ऑब्जेक्ट के क्लास पर निर्भर करता है जिस पर आप मेथड कॉल कर रहे हैं।
एक एरे में एक हैश से अलग मेथड्स होंगे।
आप Ruby डॉक्यूमेंटेशन चेक कर सकते हैं किसी दिए गए क्लास के लिए मेथड्स की सूची खोजने के लिए।
मेथड्स से वैल्यूज वापस करना
Ruby में एक प्रमुख अवधारणा है कि सभी मेथड्स एक मान लौटाते हैं।
मैं समझाता हूँ!
एक मेथड को कॉल करने के परिणामस्वरूप, आपको कुछ वापस मिलता है।
यह "कुछ" जो आपको मिलता है वह आपकी मेथड परिभाषा में अंतिम एक्सप्रेशन से आता है।
मेरा मतलब यहाँ है:
def number_one 1 end number_one # 1
एक और उदाहरण:
def add(x,y) x + y end add(5, 6) # 11
हम इसे "इम्प्लिसिट रिटर्न" कहते हैं, सिर्फ "अंतिम चीज़ को ऑटोमैटिकली लौटाएं" के लिए एक फैंसी नाम।
इसके अलावा:
आप Ruby को return कीवर्ड के साथ कुछ return करने के लिए कह सकते हैं।
def two return 2 end # 2
ध्यान दें कि जब आप return का उपयोग करते हैं तो आपका मेथड चलना बंद कर देता है।
आप इसका उपयोग अपने कोड में जल्दी रिटर्न के लिए, या लूप से बाहर निकलने के लिए करते हैं।
मेरे मेथड नाम में क्वेश्चन मार्क क्यों है?
आपको कुछ अजीब Ruby मेथड्स मिल सकते हैं।
ऐसे नामों के साथ:
empty?sort!title=
ये सभी वैध मेथड नाम हैं।
क्वेश्चन मार्क, एक्सक्लेमेशन मार्क, या इक्वल्स साइन का क्या मतलब है?
वे Ruby समुदाय में कन्वेंशन हैं।
व्याख्या:
- एक क्वेश्चन मार्क मेथड, जिसे प्रेडिकेट मेथड के रूप में भी जाना जाता है, को
trueयाfalseलौटाना चाहिए - एक एक्सक्लेमेशन मार्क मेथड कहता है कि यह नॉन-एक्सक्लेमेशन मार्क वर्जन से कुछ अलग करेगा। आमतौर पर, यह ऑब्जेक्ट को किसी तरह से बदलने से जुड़ा होता है, जैसे एलिमेंट्स जोड़ना/हटाना। "बैंग मेथड्स" के रूप में भी जाना जाता है।
- इक्वल्स साइन मेथड का मतलब असाइनमेंट है। इसका उपयोग एक इंस्टेंस वेरिएबल को मान असाइन करने के लिए किया जाता है
इनमें से कोई भी कन्वेंशन भाषा द्वारा लागू नहीं किए जाते।
लेकिन...
यदि आप उनका पालन करते हैं, तो आप अधिक Ruby-जैसा कोड लिखने में सक्षम होंगे!
सारांश
आपने Ruby मेथड्स की शक्ति के बारे में सीखा, उन्हें कैसे परिभाषित करें, उनका उपयोग कैसे करें और उचित कन्वेंशन का पालन कैसे करें।
अब इसे अभ्यास में लाने की आपकी बारी है 🙂
पढ़ने के लिए धन्यवाद!