ऑब्जेक्ट इंस्टेंस वेरिएबल सेट करके अपनी स्थिति खुद रख सकते हैं। ये वेरिएबलो ऑब्जेक्ट के अंदर रहते हैं और आम तौर पर कुछ आंतरिक स्थिति संग्रहीत करने के लिए इस्तेमाल होते हैं।
इंस्टेंस वेरिएबल हमेशा @ से शुरू होते हैं।
आप @ से शुरू होने वाला वेरिएबल सेट करके नया इंस्टेंस वेरिएबल बना सकते हैं।
उदाहरण के लिए:
class Repeater
def hear(something)
# Save what's been heard into a new instance variable called @heard
@heard = something
end
def repeat
# Return the value of the instance variable
@heard
end
end
repeater = Repeater.new
repeater.hear("Hello, friend!")
print repeater.repeat # Prints "Hello, friend!"
ऑब्जेक्ट आम तौर पर अपनी शुरुआती स्थिति initialize मेथड में सेट करते हैं। किसी क्लास पर new कॉल करते समय इस मेथड को अपने आप कॉल किया जाता है।
class Airplane
def initialize
@wings = 2
end
def wings
@wings
end
end
plane = Airplane.new
plane.wings # returns 2
initialize मेथड आर्गुमेंट भी ले सकता है, ताकि हर इंस्टेंस किसी अपनी अलग स्थिति से शुरू हो सके:
class Suitcase
def initialize(locked)
@locked = locked
end
end
इंस्टेंस वेरिएबलो को बाहर से पढ़ने और लिखने के लिए निजी मानना अच्छा तरीका है। इसके बजाय हम उनकी वैल्यू पाने और सेट करने के लिए मेथड बनाते हैं। उदाहरण के लिए:
class Suitcase
def initialize
@locked = false
end
def locked? # Query methods should be named with a trailing `?`
@locked
end
def lock! # Methods which mutate state should have trailing `!`
@locked = true
end
end
suitcase = Suitcase.new
suitcase.locked? # false
suitcase.lock!
suitcase.locked? # true
Nil एक अंग्रेज़ी शब्द है जिसका मतलब "कुछ नहीं" या "शून्य" होता है।
Ruby में nil का इस्तेमाल किसी ऑब्जेक्ट की अनुपस्थिति बताने के लिए किया जाता है।
दूसरी प्रोग्रामिंग भाषाओं में null या none वैल्यू भी वही भूमिका निभा सकती हैं।
# I do not have a favorite color
favorite_color = nil
जब कोई इंस्टेंस वेरिएबल पहली बार सामने आता है, तो Ruby उसे डिफॉल्ट रूप से nil वैल्यू दे देता है, जब तक कि उसे कोई दूसरी वैल्यू न दी जाए।
print @favourite_color # prints nil
@favourite_color = "blue"
print @favourite_color # prints "blue"
आप एक अम्यूज़मेंट पार्क के साथ काम कर रहे हैं और आपको एक ऐसा सिस्टम डिज़ाइन करने का स्पेसिफिकेशन दिया गया है जो पार्क में आने वालों और राइड्स को संभाले। आपको Attendee को मॉडल करना है, यानी पार्क में आने वाले व्यक्ति को।
Attendee क्लास का Attendee#initialize मेथड बनाइए। यह ऊँचाई (सेंटीमीटर में) लेता है और उसे एक इंस्टेंस वेरिएबल में संग्रहीत करता है
Attendee.new(106)
# => #<Attendee:0x000055c33e6c7e18 @height=106>
Attendee क्लास का Attendee#height गेटर बनाइए। यह इंस्टेंस की ऊँचाई लौटाता है
Attendee.new(106).height
# => 106
सभी अटेंडी ने राइड पास नहीं खरीदा होता, लेकिन हमें पता होना चाहिए कि किसी के पास पास है या नहीं। Attendee क्लास के लिए Attendee#pass_id गेटर बनाइए। यह इंस्टेंस का pass_id लौटाता है, और अगर अटेंडी के पास राइड पास नहीं है तो nil लौटाता है।
Attendee.new(106).pass_id
# => nil
Attendee#issue_pass! बनाइए, जो इंस्टेंस की स्थिति बदल दे और pass id वाले इंस्टेंस वेरिएबल में आर्गुमेंट रख दे। यह pass id लौटाता है।
attendee = Attendee.new(106)
attendee.issue_pass!(42)
attendee.pass_id
# => 42
कुछ मेहमान असुरक्षित तरीके से पेश आकर नियम तोड़ देते हैं, इसलिए पार्क पास वापस ले सकना चाहता है। Attendee#revoke_pass! बनाइए, जो इंस्टेंस की स्थिति बदल दे और pass id को nil कर दे
attendee = Attendee.new(106)
attendee.issue_pass!(42)
attendee.revoke_pass!
attendee.pass_id
# => nil
Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।