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

Ruby एट्रिब्यूट एक्सेसर्स में महारत: attr_accessor, attr_writer, और attr_reader का उपयोग

यह लेख Ruby में एट्रिब्यूट एक्सेसर्स (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 

अन्य OOP भाषाओं में इसे "गेटर" मेथड के रूप में जाना जाता है। आप एक मेथड परिभाषित करते हैं जो आपको इंस्टेंस वेरिएबल का मान देता है।

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

उसके लिए, आपको एक और मेथड की आवश्यकता होगी, जैसे यह वाला:

 class Food def protein=(value) @protein = value end end bacon.protein = 25 

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

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

अब:

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

किसी शॉर्टकट की तरह?

हाँ!

वह है 🙂

यहीं attr_accessor आता है।

Ruby attr_accessor उदाहरण

आप attr_accessor के साथ Ruby को ये मेथड्स आपके लिए बनाने के लिए कह सकते हैं।

यहां कैसे:

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

इस लाइन को देखें:

 attr_accessor :protein 

यह एक Ruby मेथड है जो आपके लिए अन्य मेथड्स बनाता है।

कौन से मेथड्स?

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

  • 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? 

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

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

सारांश

आपने Ruby में एट्रिब्यूट एक्सेसर्स के बारे में सीखा! 3 मेथड्स का एक सेट (attr_accessor, attr_writer और attr_reader) क्लास के बाहर से इंस्टेंस वेरिएबल्स को एक्सेस और सेट करने के लिए।

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


  1. रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं रूबी मैट्रिक्स को समझना: परिभाषा, अनुप्रयोग और उन्हें कैसे बनाएं

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

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

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

  1. OmniAuth-Twitter के साथ Rails में ट्विटर लॉगिन एकीकृत करें: चरण-दर-चरण मार्गदर्शिका OmniAuth-Twitter के साथ Rails में ट्विटर लॉगिन एकीकृत करें: चरण-दर-चरण मार्गदर्शिका

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