Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

कस्टम to_s और Inspect मेथड्स के साथ सेल्फ-डिस्क्राइबिंग रूबी ऑब्जेक्ट्स परिभाषित करें

इस लेख में आप सीखेंगे कि रूबी 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 मेथड्स का उपयोग करके बेहतर क्लासेस बनाना सीखा!

यदि आपको यह लेख पसंद आया तो कृपया इसे शेयर करें ताकि अधिक लोग इसे ढूंढ सकें।

पढ़ने के लिए धन्यवाद।

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।

  1. Excel में आर्ट पोर्टफोलियो बनाएं: ऑब्जेक्ट्स उपयोग करने की चरण-दर-चरण गाइड Excel में आर्ट पोर्टफोलियो बनाएं: ऑब्जेक्ट्स उपयोग करने की चरण-दर-चरण गाइड

    अगर आप Excel ऑब्जेक्ट्स का उपयोग करके आसानी से एक आर्ट पोर्टफोलियो बनाने की प्रक्रियाएं ढूंढ रहे हैं, तो यह लेख आपके लिए मददगार होगा। तो, आइए इस कार्य को करने के विस्तृत चरणों को जानने के लिए मुख्य लेख से शुरू करते हैं। वर्कबुक डाउनलोड करें Excel में ऑब्जेक्ट्स इन्सर्ट करने का क्या मतलब है? ऑब्जेक

  1. Excel डेटाबेस को स्वचालित रूप से अपडेट करें: 4 सिद्ध तरीके Excel डेटाबेस को स्वचालित रूप से अपडेट करें: 4 सिद्ध तरीके

    यह लेख दिखाता है कि 4 उपयोगी तरीकों की मदद से Excel में एक डेटाबेस कैसे बनाएं जो स्वचालित रूप से अपडेट होता है। यह गतिशील डेटा के साथ काम करते समय आवश्यक एक महत्वपूर्ण विशेषता है। जब डेटाबेस किसी अन्य स्रोत से डेटा पर निर्भर करता है, तो स्रोत डेटा के अनुसार स्वचालित अपडेट बहुत महत्वपूर्ण है। आइए उदा