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

Attr_accessor, attr_writer और attr_reader का उपयोग कैसे करें

यह लेख एट्रिब्यूट एक्सेसर्स के बारे में है (attr_accessor ) रूबी में।

अगर आप जल्दी में हैं, तो नीचे स्क्रॉल करें।

क्योंकि मैं समझाकर शुरुआत करना चाहूंगा:

हम विशेषता एक्सेसर्स का उपयोग क्यों करते हैं !

मान लें कि आपके पास आवृत्ति चर के साथ एक वर्ग है और आप उन्हें बाहरी दुनिया में दिखाना चाहते हैं।

कैसे?

आपको एक विधि परिभाषित करनी होगी।

केवल विधियाँ ही आवृत्ति चरों तक पहुँच सकती हैं।

क्यों?

क्योंकि अगर आप ऐसा नहीं करते हैं तो आपको एक त्रुटि मिलेगी।

यहां एक उदाहरण दिया गया है :

class Food
  def initialize(protein)
    @protein = protein
  end
end

bacon = Food.new(21)
bacon.protein

# NoMethodError: undefined method `protein'

NoMethodError जब आप protein . का मान मांगते हैं तो आपको यह त्रुटि मिलती है उचित सेटअप के बिना।

समाधान क्या है?

आप अपनी स्वयं की पद्धति को इस प्रकार परिभाषित कर सकते हैं :

class Food
  def protein
    @protein
  end
end

bacon.protein
# 21

अन्य ओओपी भाषाओं में इसे "गेट्टर" विधि के रूप में जाना जाता है। आप एक ऐसी विधि को परिभाषित करते हैं जो आपको आवृत्ति चर का मान देती है।

आप मान भी बदलना चाह सकते हैं।

उसके लिए, आपको किसी अन्य विधि की आवश्यकता होगी , इस तरह:

class Food
  def protein=(value)
    @protein = value
  end
end

bacon.protein = 25

कल्पना कीजिए कि आप ऑब्जेक्ट में एक पोर्टल खोल रहे हैं ताकि आप मान बदल सकें।

यह वही कर रहा है।

अब :

क्या इस तरह के तरीके को परिभाषित करने का कोई बेहतर तरीका है?

किसी तरह का शॉर्टकट पसंद है?

हाँ!

वहाँ

. है

वहीं attr_accessor में आता है।

रूबी attr_accessor उदाहरण

आप रूबी को attr_accessor . के साथ इन तरीकों को बनाने के लिए कह सकते हैं ।

यहां बताया गया है :

class Food
 attr_accessor :protein

 def initialize(protein)
   @protein = protein
 end
end

इस पंक्ति को देखें :

attr_accessor :protein

यह एक रूबी विधि है जो आपके लिए अन्य विधियाँ बनाती है।

कौन से तरीके?

इस उदाहरण के लिए, यह बनाता है:

  • protein
  • protein=

ये वही तरीके हैं जो हमने पहले बनाए थे…

लेकिन अब आपको उन्हें टाइप करने की ज़रूरत नहीं है।

यह एक शॉर्टकट है!

attr_accessor बनाम attr_reader

इसके अलावा attr_accessor , आपके पास अन्य प्रकार के एक्सेसर्स भी हैं।

उनमें से तीन सटीक होने के लिए :

  • attr_accessor
  • attr_reader
  • attr_writer

उनके बीच क्या अंतर हैं?

खैर, attr_accessor रीडर और राइटर दोनों तरीके बनाता है।

  • attr_reader केवल पाठक बनाता है।

  • attr_writer केवल लेखक बनाता है।

दूसरे शब्दों में :

attr_reader . के साथ आप केवल मान पढ़ सकते हैं, लेकिन इसे बदल नहीं सकते। attr_writer . के साथ आप केवल एक मान बदल सकते हैं लेकिन उसे पढ़ नहीं सकते।

एकाधिक आवृत्ति चर

एकाधिक विशेषता विधियों को परिभाषित करना चाहते हैं?

आप यह कर सकते हैं।

लेकिन आपको सही सिंटैक्स का उपयोग करना होगा।

इसे पसंद करें :

attr_reader :name, :value, :ready?

आप जितने चाहें उतने बना सकते हैं।

वीडियो ट्यूटोरियल देखें

सारांश

आपने रूबी में एट्रिब्यूट एक्सेसर्स के बारे में सीखा है! 3 विधियों का एक सेट (attr_accessor , attr_writer &attr_reader ) कक्षा के बाहर से आवृत्ति चरों तक पहुँचने और सेट करने के लिए।

अब अभ्यास करने का समय है।


  1. एक मैट्रिक्स क्या है और रूबी में इसका उपयोग कैसे करें?

    मैट्रिक्स एक 2डी (2-आयामी) सरणी है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। उनका उपयोग इसके लिए किया जा सकता है : टेबल गेम (शतरंज, चेकर्स, आदि) में बोर्ड का प्रतिनिधित्व करना सांख्यिकी और डेटा विश्लेषण प्लॉट और ग्राफ़ बनाना चूंकि यह एक शक्तिशाली डेटा संरचना ह

  1. रूबी में स्ट्रक्चर और ओपनस्ट्रक्चर का उपयोग कैसे करें?

    रूबी में स्ट्रक्चर क्या है? एक संरचना एक अंतर्निहित रूबी वर्ग है, इसका उपयोग नए वर्ग बनाने के लिए किया जाता है जो मूल्य वस्तुओं का उत्पादन करते हैं। संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए एक मूल्य वस्तु का उपयोग किया जाता है। यहां एक उदाहरण दिया गया है : एक Point दो निर्देशांकों के साथ

  1. रेल एप्लिकेशन में OmniAuth-Twitter का उपयोग कैसे करें

    इस ट्यूटोरियल में, आप सीखेंगे कि आपके एप्लिकेशन के उपयोगकर्ताओं को अपने ट्विटर अकाउंट का उपयोग करके लॉग इन करने की अनुमति कैसे दी जाए। OAuth जैसे टूल से ऐसा करना आसान बना दिया गया है। आप OmniAuth-Twitter का उपयोग करेंगे, जिसमें OmniAuth के लिए Twitter रणनीति शामिल है। चलो गोता लगाएँ! आरंभ कर