इस लेख में आप सीखेंगे कि रूबी inspect मेथड कैसे काम करता है और हम इसका उपयोग क्यों करते हैं।
जब आप स्ट्रिंग या ऐरे प्रिंट करते हैं तो आप इसकी सामग्री देखते हैं।
उदाहरण:
puts [1,2,3] 1 2 3
लेकिन जब आप अपने खुद के ऑब्जेक्ट्स प्रिंट करते हैं...
आप यह देखते हैं:
#<Cat:0x29458e0>
क्यों?
क्योंकि आपने रूबी को नहीं बताया कि इस क्लास को ऐसे तरीके से कैसे प्रदर्शित किया जाए जो समझ में आए।
आप इसे बदल सकते हैं यदि आप to_s जैसी मेथड को परिभाषित करते हैं।
आइए देखते हैं कि यह कैसे काम करता है!
to_s लागू करना
जब आप किसी ऑब्जेक्ट के साथ puts का उपयोग करते हैं, तो रूबी ऑब्जेक्ट का स्ट्रिंग प्रतिनिधित्व प्राप्त करने के लिए to_s मेथड को कॉल करता है।
डिफ़ॉल्ट रूप से आपको क्लास का नाम (Cat) मिलता है...
साथ ही कुछ संख्या जो हेक्साडेसिमल फॉर्मेट में object_id को दर्शाती है (0x29458e0)।
इसे बदलने का तरीका यहाँ है:
class Cat
def to_s
"I'm a cat"
end
end
puts Cat.new # "I'm a cat"
यदि आपकी क्लास में इंस्टेंस वेरिएबल्स हैं, तो आप उन्हें अपने ऑब्जेक्ट विवरण का हिस्सा बना सकते हैं।
इस तरह:
class Cat
attr_reader :color
def initialize(color)
@color = color
end
def to_s
"I'm a #{color} cat"
end
end
puts Cat.new("blue") # "I'm a blue cat"
puts Cat.new("white") # "I'm a white cat"
अब जब आप इस ऑब्जेक्ट को प्रिंट करेंगे तो आपको अधिक उपयोगी जानकारी दिखाई देगी।
क्या यह कूल नहीं है?
रूबी Inspect मेथड
आप ऑब्जेक्ट को दो संभावित तरीकों से दर्शा सकते हैं।
पहला:
to_s का उपयोग करना।
यह वह है जो आप चाहते हैं कि आपके उपयोगकर्ता देखें जब आप ऑब्जेक्ट प्रदर्शित करते हैं।
उदाहरण के लिए, टाइम ऑब्जेक्ट के साथ, आप समय को ऐसे तरीके से प्रदर्शित करेंगे जो समझ में आए (2018-12-28 19:17:28), बजाय यह दिखाने के कि समय वास्तव में कैसे स्टोर किया जाता है (1546021067)।
फिर:
आप ऑब्जेक्ट्स को inspect कर सकते हैं, यह ऑब्जेक्ट का एक अधिक रॉ संस्करण देता है।
अंतर क्या है?
to_sको परिभाषित करें ताकि जब आप puts का उपयोग करें, तो यह ऑब्जेक्ट का यह विशेष दृश्य दिखाएगा।inspectको परिभाषित करें ताकि आप स्वयं और अन्य डेवलपर्स को डीबगिंग में मदद कर सकें।
यहाँ एक उदाहरण है:
"abc".inspect
इस रूप में दिखाता है:
"abc"
Inspect कोटेशन मार्क्स रखता है, और विशेष कैरेक्टर्स (जैसे नई लाइन के लिए \n) विजिबल हो जाते हैं।
सबसे अच्छा हिस्सा?
आप अपनी खुद की क्लासेस में inspect मेथड को लागू कर सकते हैं 🙂
यहाँ बताया गया है:
class Cat
attr_reader :color
def inspect
"Cat - id: #{object_id} - color: #{color}"
end
end
Cat.new("white").inspect # "Cat - id: 23316588 - color: white"
यही तरीका है जिससे आप ऑब्जेक्ट्स बना सकते हैं जो खुद का वर्णन करते हैं!
वीडियो ट्यूटोरियल
सारांश
आपने रूबी inspect और to_s मेथड्स का उपयोग करके बेहतर क्लासेस बनाना सीखा!
यदि आपको यह लेख पसंद आया तो कृपया इसे शेयर करें ताकि अधिक लोग इसे ढूंढ सकें।
पढ़ने के लिए धन्यवाद।