यदि आप रूबी इंस्टेंस वेरिएबल्स के बारे में जानना चाहते हैं, तो वे कैसे काम करते हैं और वे उपयोगी क्यों हैं।
आप सही जगह पर हैं!
पहला सवाल…
एक आवृत्ति चर क्या है?
रूबी प्रोग्रामिंग भाषा में, एक आवृत्ति चर एक प्रकार का चर है जो एक @
. से शुरू होता है प्रतीक।
उदाहरण :
@fruit
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के हिस्से के रूप में एक इंस्टेंस वेरिएबल का उपयोग ऑब्जेक्ट को डेटा स्टोर करने के लिए अपना निजी स्थान देने के लिए किया जाता है।
हम कहते हैं कि वस्तुएं कर सकती हैं :
- चीजें करें
- चीजें जानें
तरीकों से चीजें होती हैं, वे चीजें करती हैं।
इंस्टेंस वेरिएबल डेटा स्टोर करते हैं, वे चीजों को जानते हैं।
उदाहरण :
अगर आपके पास Fruit
है कक्षा, आप जानना चाह सकते हैं कि यह किस प्रकार का फल है, किस रंग, वजन, आदि।
ये सभी विशेषताएँ आवृत्ति चर बन जाती हैं।
जैसे @color
, @type
, @weight
।
अगला :
आइए कोड उदाहरण देखें।
रूबी इंस्टेंस वैरिएबल को कैसे परिभाषित और उपयोग करें
आप कक्षाओं के अंदर आवृत्ति चर परिभाषित करते हैं।
उदाहरण :
मान लें कि हमारे पास CoffeeMachine
है कक्षा।
एक कॉफी मशीन को पानी की आवश्यकता होती है, इसलिए आप जानना चाहेंगे कि कितना पानी उपलब्ध है।
हम यह कर सकते हैं :
class CoffeeMachine def initialize @water = 100 end end
यह @water
हमारा उदाहरण चर है।
हम 100
assign असाइन करते हैं करने के लिए @water
प्रारंभिक मान के रूप में।
अब :
अगर हमारे पास make_coffee
है विधि, हम टैंक में बचे पानी की मात्रा को कम कर सकते हैं।
class CoffeeMachine def initialize @water = 100 end def make_coffee @water -= 10 end end
ध्यान दें कि प्रत्येक CoffeeMachine
आपके द्वारा बनाई गई वस्तु (new
. के साथ ) का @water
. के लिए अपना निजी मान होगा ।
समझ में आता है, है ना?
क्योंकि अगर आपके पास 10 वास्तविक कॉफी मशीन हैं, तो प्रत्येक का अपना जल स्तर होगा।
इसलिए हम आवृत्ति चर का उपयोग करते हैं!
इंस्टेंस वैरिएबल कैसे एक्सेस करें
इंस्टेंस वेरिएबल बहुत उपयोगी नहीं होंगे यदि आप उनके वर्तमान मूल्य को नहीं पढ़ सकते हैं।
आप @
. के साथ एक आवृत्ति चर मान पढ़ सकते हैं वाक्य रचना।
इसे पसंद करें :
class CoffeeMachine def initialize @water = 50 end def print_water_level puts "Water Level: #{@water}" end end machine = CoffeeMachine.new machine.print_water_level # Water Level: 50
print_water_level
विधि @water
uses का उपयोग करती है इसका मूल्य प्रिंट करने के लिए।
विशेषता एक्सेसर्स का उपयोग करना
आप देख सकते हैं कि आप बाहर . से आवृत्ति चरों तक नहीं पहुंच सकते हैं कक्षा।
वह डिज़ाइन द्वारा है!
इसे हम "एनकैप्सुलेशन" कहते हैं, किसी ऑब्जेक्ट का डेटा अन्य रूबी ऑब्जेक्ट्स की तरह बाहरी दुनिया से सुरक्षित रहता है।
यहां मेरा मतलब है :
machine = CoffeeMachine.new machine.water # NoMethodError: undefined method `water' for #<CoffeeMachine:0x2d0a530> machine.@water # SyntaxError: unexpected tIVAR, expecting '('के लिए अपरिभाषित विधि 'वॉटर'
कुछ मामलों में, आप इसकी अनुमति देना चाह सकते हैं।
आप ऑब्जेक्ट के डेटा में एक विंडो खोल सकते हैं ताकि वह बाहर से उपलब्ध हो जाए।
ऐसा करने का एक तरीका :
class CoffeeMachine def initialize @water = 100 end def water @water end end machine = CoffeeMachine.new machine.water # 100
यहां कुछ खास नहीं है।
हम अंदर से मान वापस कर रहे हैं, जहां हमारी पहुंच है ।
एक अन्य विकल्प विशेषता रीडर का उपयोग करना है।
उदाहरण :
class CoffeeMachine attr_reader :water def initialize @water = 100 end end machine = CoffeeMachine.new machine.water # 100
पहले जैसा ही।
फर्क सिर्फ इतना है कि रूबी आपके लिए कड़ी मेहनत करेगी और वह water
बनाएगी विधि।
वे बातें जो आपको जाननी चाहिए
इंस्टेंस वैरिएबल के बारे में याद रखने वाली कुछ चीज़ें ताकि आप परेशानी में न पड़ें.
नोट लें :
- एक अपरिभाषित आवृत्ति चर हमेशा
nil
लौटाता है - इंस्टेंस वैरिएबल को
initialize
में बनाने की ज़रूरत नहीं है विधि, लेकिन इस तरह आप उन्हें एक प्रारंभिक मान देते हैं - इंस्टेंस वैरिएबल तक पहुंचने के उन्नत तरीके हैं, जैसे
instance_variable_get
, लेकिन आपको इनसे बचना चाहिए
बीटीडब्ल्यू, आप आवृत्ति चर की एक सूची प्राप्त कर सकते हैं।
इसे पसंद करें :
machine.instance_variables # [:@water]
आपको वह मददगार लग सकता है 🙂
एक और बात :
रेल में, उदाहरण चर (जैसे @books
), आपके नियंत्रक और विचारों के बीच डेटा साझा करने के लिए उपयोग किया जाता है।
लेकिन आप अभी भी उन्हें अपनी कक्षाओं के लिए सामान्य रूप से उपयोग कर सकते हैं।
सारांश
आपने रूबी इंस्टेंस वेरिएबल्स के बारे में सीखा है! एक प्रकार का वेरिएबल जो @
. से शुरू होता है प्रतीक और इसका उपयोग कक्षाओं के अंदर डेटा स्टोर करने के लिए एक जगह देने के लिए किया जाता है।
अभी अभ्यास करना न भूलें, कोड उदाहरणों के साथ खेलें और अपने स्वयं के उदाहरण बनाएं।
पढ़ने के लिए धन्यवाद।