क्या कोई उदाहरण विशेषता के माध्यम से 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। अगर आप बाद में एक्सेसर मेथड को बदलते हैं और इंस्टेंस वैरिएबल सेट करते हैं तो यह आपको अतिरिक्त रिफैक्टर और बग्स से बचाता है। (या अगर कोई और आपके काम को