यदि आप रूबी सीख रहे हैं तो आपको "स्वयं" कीवर्ड का उपयोग बहुत भ्रमित करने वाला लग सकता है।
यह कैसे काम करता है?
self
क्या है? , बिल्कुल?
यह एक रूबी कीवर्ड है जो आपको वर्तमान वस्तु तक पहुंच प्रदान करता है।
<ब्लॉकक्वॉट>यदि आप नहीं जानते कि वस्तुएँ क्या हैं, तो मेरे द्वारा आपके लिए बनाया गया यह वीडियो देखें। यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग से संबंधित है।
यह "वर्तमान वस्तु" संदर्भ पर निर्भर करती है।
संदर्भ?
हां, संदर्भ वह है जहां आपका कोड किसी भी समय होता है।
यहां एक उदाहरण दिया गया है :
यदि आपका कोड इंस्टेंस विधि के अंदर है, self
एक उदाहरण है उस वर्ग का। दूसरे शब्दों में, self
एक वस्तु है।
आप इसे स्वयं क्रिया में देख सकते हैं।
यह कोड चलाएँ :
डिफ कॉफी पुट सेल्फएंडकॉफी# मुख्य
यह कोड coffee
. को परिभाषित और कॉल करता है विधि जो self
. के मान को प्रिंट करती है ।
यह main
क्यों प्रिंट करता है ?
क्योंकि यह शीर्ष-स्तरीय ऑब्जेक्ट का नाम है, यह एक ऐसा ऑब्जेक्ट है जहां आपको बाहर परिभाषित सभी विधियां मिलेंगी। एक वर्ग।
हमारे coffee
की तरह विधि यहाँ।
लेकिन अगर आप Cat
. नामक वर्ग के अंदर एक विधि परिभाषित करते हैं , फिर self
एक Cat
होगा वस्तु।
जैसा कि यहां देखा गया है :
क्लास कैट डेफ म्याऊ पुट सेल्फ एंडेंडकैट.न्यू.मियो# <कैट:0x7a14c5>
इन उदाहरणों से हम बता सकते हैं कि self
. का मान आप इसका उपयोग कहां करते हैं इसके आधार पर परिवर्तन।
अब :
मेरा मानना है कि आप किसी भी चीज़ के उद्देश्य को समझकर उसे बेहतर तरीके से समझ सकते हैं।
self
क्यों है उपयोगी?
आइए कुछ उदाहरण देखें।
असंबद्धता के लिए स्वयं का उपयोग करना
self
. के लिए एक व्यावहारिक उपयोग एक विधि और एक स्थानीय चर के बीच अंतर बताने में सक्षम होना है।
एक चर और एक विधि को समान नाम देना एक अच्छा विचार नहीं है। लेकिन अगर आपको उस स्थिति के साथ काम करना है, तो आप self.method_name
से मेथड को कॉल कर पाएंगे। ।
यहां मेरा मतलब है :
कक्षा उदाहरण def do_something केला ="वेरिएबल" केला डालता है सेल्फ।>यहाँ हमारे पास एक
banana
है स्थानीय चर,do_something
. के अंदर विधि, लेकिन हमारे पास एकbanana
भी है विधि।एक स्थानीय चर को प्राथमिकता दी जाती है।
इसलिए हमें
self
. का उपयोग करने की आवश्यकता है यहाँ अगर हम कॉल करना चाहते हैंbanana
विधि, मुद्रण . के बजायbanana
. का मान चर।अगला :
आइए एक अधिक सामान्य उपयोग के मामले को देखें… वर्ग विधियों को परिभाषित करना!
कक्षा-स्तरीय विधियों को परिभाषित करने के लिए स्वयं का उपयोग करना
self
. के लिए नंबर एक उपयोग , निःसंदेह, वर्ग-स्तरीय विधियों को परिभाषित करना है।मुझे यकीन है कि आपने उन्हें देखा है।
ये
def self.method_name
विधि परिभाषाएं ।इसे पसंद करें :
कक्षा सलाद def self.buy_olive_oil # ... endendसलाद.buy_olive_oilयह
self
यहाँSalad
के बराबर है , कक्षा का नाम।यह क्यों उपयोगी है?
क्योंकि हमें प्रत्येक विधि परिभाषा के लिए वर्ग के नाम का उपयोग करने की आवश्यकता नहीं है, यदि हम कक्षा बदलते हैं तो हमारे कोड को बदलना आसान हो जाता है।
यह कोड को कम शोर और पढ़ने में बेहतर बनाता है।
इसलिए हम
def self.buy_olive_oil
do करते हैं के बजायdef Salad.buy_olive_oil
।स्वयं के लिए अन्य उपयोग
हाँ!
self
. के लिए और भी अधिक उपयोग हैं , इसलिए इससे परिचित होना एक उपयोगी बात है।उदाहरण के लिए :
आप वर्तमान वस्तु की तुलना किसी अन्य वस्तु से करने के लिए एक विधि में इसका उपयोग कर सकते हैं।
ऐसा कुछ :
def ==(other) self ==otherendआप
self
का भी उपयोग कर सकते हैं डिबगिंग उद्देश्यों के लिए, यह पता लगाने के लिए कि आप किस ऑब्जेक्ट के साथ काम कर रहे हैं।इसे पसंद करें :
p स्वयंया आप इसे बिल्डर डिज़ाइन पैटर्न जैसे डिज़ाइन पैटर्न को लागू करने के लिए रिटर्न वैल्यू के रूप में उपयोग कर सकते हैं।
उदाहरण :
क्लास सलाद डीफ़ इनिशियलाइज़ @इंग्रेडिएंट्स =[] एंड डीफ़ एड_नट्स @इंग्रेडिएंट्स <<:nuts self endendmy_salad =Salad.new.add_nutsसंक्षेप में, यहां स्वयं के लिए उपयोगी उपयोगों की सूची दी गई है :
- कक्षा-स्तरीय विधियों को परिभाषित करें
- जब आपके पास एक ही नाम का स्थानीय चर हो, तो इंस्टेंस विधि का उपयोग करें
- रिटर्निंग सेल्फ (बिल्डर पैटर्न)
- डीबगिंग
- वस्तुओं की तुलना करना (==)
- विधि कॉल का डिफ़ॉल्ट रिसीवर
स्वयं बनाम स्वयं
इस विषय को समाप्त करने से पहले हमें एक और बात पर ध्यान देना चाहिए।
Kernel#itself
विधि।
यह एक ऐसा तरीका है जिसे आप किसी ऑब्जेक्ट पर कॉल कर सकते हैं और ऑब्जेक्ट अपने आप वापस आ जाएगा।
उदाहरण :
[1,2,3,nil].select(&:self)# [1, 2 ,3]
यह उदाहरण nil
को फ़िल्टर करता है &false
मान।
अंतर को समझना :
self
एक कीवर्ड है। इसका मान कहां पर निर्भर करता है आप इसका इस्तेमाल करते हैंself
एक विधि है। इसका मूल्य क्या पर निर्भर करता है जिस वस्तु पर आप उसका उपयोग करते हैं (1.itself
. में ,1
वस्तु है)
आशा है कि यह सहायक होगा।
निष्कर्ष
आपने रूबी सेल्फ कीवर्ड के बारे में जान लिया है कि यह वास्तव में क्या है, यह क्यों उपयोगी है और इसका उपयोग कैसे करना है।
अब इसे आजमाने की आपकी बारी है।
पढ़ने के लिए धन्यवाद!