निम्न मानते हैं:Self.attribute बनाम @ adribute के लाभ?
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
'स्वयं' का उपयोग करना बेहतर क्यों है। एक आवृत्ति चर '@salt' के बजाय?
निम्न मानते हैं:Self.attribute बनाम @ adribute के लाभ?
def create_new_salt
self.salt = self.object_id.to_s + rand.to_s
end
'स्वयं' का उपयोग करना बेहतर क्यों है। एक आवृत्ति चर '@salt' के बजाय?
self.salt =
का उपयोग salt=
विधि का उपयोग करने के लिए किया जाएगा, यदि परिभाषित किया गया है। यह salt=
विधि के अंदर किसी भी त्रुटि जांच/परिवर्तन को सुनिश्चित करने के लिए उपयोगी है। हालांकि, इसका मतलब है कि एक स्पष्ट salt=
विधि (उदाहरण के लिए संभवतः attr_accessor
द्वारा बनाई गई) होनी चाहिए, और यह एक अच्छा विचार नहीं है।
सारांश: यदि आपके पास कस्टम salt=
विधि है तो self.salt =
का उपयोग करें; @salt =
का उपयोग करें यदि आप जानते हैं कि आप @salt
क्या चाहते हैं, या यदि आपके पास कस्टम salt=
विधि नहीं है।
अंतिम नोट: मैं शायद इस तरह लिखते हैं (मेरी राय में यह एक छोटे से स्पष्ट है)
def create_new_salt
@salt = "#{object_id}#{rand}"
end
संपादित करें: @ एक और जवाब पर चक की टिप्पणी, मैं इस संशोधित किया धन्यवाद करने के लिए दूर करने के लिए self.
-फ्री कोड - यह गलत था।
पीटर के महान उत्तर के अलावा, मैं आमतौर पर रुबी में संकेत करता हूं कि मैं @attr के बजाय self.attr = और self.attr का उपयोग करके attr_accessor
का उपयोग कर रहा हूं।
संपादित करें: "स्वयं" के बिना, आप एक स्थानीय चर बना रहे हैं। ओह।
एक और दिलचस्प बात self.salt=
लागू किया जा सकता है कि भले ही नमक = विधि निजी है:
। यह सामान्य रूबी नियम का अपवाद है कि एक स्पष्ट विधि को एक स्पष्ट रिसीवर के साथ नहीं बुलाया जा सकता है।
धन्यवाद पीटर! मैं सहमत हूं, मुझे आपके संस्करण को बेहतर पसंद है। – Kevin