क्या कोई उदाहरण विशेषता के माध्यम से self.attribute
और इसके द्वारा एक्सेस करने के बीच के अंतर को समझा सकता है @attribute
?
क्या कोई उदाहरण विशेषता के माध्यम से self.attribute
और इसके द्वारा एक्सेस करने के बीच के अंतर को समझा सकता है @attribute
?
जवाबों:
self.attribute
विधि को बुलाता है attribute
।
self.attribute = value
विधि attribute=
को तर्क से पुकारता है value
।
@attribute
और @attribute = value
इंस्टेंस वैरिएबल का मान प्राप्त / सेट करें @attribute
।
तो मूल रूप से वे दो पूरी तरह से अलग चीजें हैं।
हालाँकि अगर आप attr_accessor :attribute
इसे कहते हैं तो attribute
लौटने @attribute
की विधि attribute=(value)
और सेट करने की विधि को परिभाषित करता है @attribute = value
। तो उस स्थिति में, कोई अंतर नहीं है।
"एक्सेसिंग वेरिएबल को सीधे एक्सेस करने के तरीकों से एक्सेस करने की तुलना में लगभग दो गुना तेज है"
बाहर की जाँच करें: https://www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/
self.
(जब तक कि आप गेटर / सेटर विधि नहीं लिख रहे हैं) भले ही वर्तमान में आपके पास होattr_accessor
। अगर आप बाद में एक्सेसर मेथड को बदलते हैं और इंस्टेंस वैरिएबल सेट करते हैं तो यह आपको अतिरिक्त रिफैक्टर और बग्स से बचाता है। (या अगर कोई और आपके काम को