अंतर यह इंगित करता है कि आप विधियों तक कैसे पहुंचते हैं।
कक्षा तरीकों, संकेत मिलता है कि संदेश वर्ग/मॉड्यूल वस्तु के लिए भेजा जा सकता है, जबकि उदाहरण तरीकों संकेत मिलता है कि संदेश एक उदाहरण वस्तु के लिए भेजा जा सकता है #
विभाजक का उपयोग ::
विभाजक का उपयोग करें।
मैं अंतर दिखाने के लिए Complex
वर्ग (रूबी 1.9 में) चुनने जा रहा हूं। आपके पास Complex::rect
और Complex#rect
दोनों हैं। इन तरीकों में अलग-अलग धैर्य हैं और वे पूरी तरह से अलग-अलग उद्देश्यों की सेवा करते हैं। Complex::rect
एक असली और एक काल्पनिक तर्क लेता है, Complex
का एक नया उदाहरण लौटाता है, जबकि Complex#rect
उदाहरण के वास्तविक और काल्पनिक घटकों की एक सरणी देता है।
ruby-1.9.1-p378 > x = Complex.rect(1,5)
=> (1+5i)
ruby-1.9.1-p378 > x.rect
=> [1, 5]
ruby-1.9.1-p378 > x.rect(2, 4) # what would this even do?
ArgumentError: wrong number of arguments(2 for 0)
from (irb):4:in `rect'
from (irb):4
from /Users/mr/.rvm/rubies/ruby-1.9.1-p378/bin/irb:17:in `<main>'
मुझे लगता है कि कारण यह है कि वे सब कुछ के लिए विभाजक के रूप में .
का उपयोग नहीं करते कि यह अस्पष्ट होगा विधि कक्षा या एक उदाहरण के अंतर्गत आता है या नहीं। अब जब मैं रूबी को ऐसा करने के लिए उपयोग किया जाता हूं, तो मैं वास्तव में इसे ईमानदार होने के लिए अन्य भाषाओं के सम्मेलनों में कमी के रूप में देखता हूं।
इसके अलावा, यह एक पूरी तरह से असंबंधित विषय के कुछ क्षेत्रों से है, क्योंकि सभी संदेशों को भेज सकते हैं संदेश होते हैं, ठीक से बोल रहा, भले ही वह एक सार्वजनिक रूप से सुलभ क्षेत्र की तरह दिखता है। फ़ील्ड में आपके पास सबसे नज़दीकी चीज विशेषताएँ या आवृत्ति चर हैं, जो हमेशा @
के साथ प्रीफ़िक्स किए जाते हैं और सीधे उदाहरण के बाहर से सुलभ नहीं होते हैं जब तक आप विरासत या Object#instance_variable_get
/_set
का उपयोग नहीं कर रहे हैं।
विशेष रूप से उन्होंने ::
और #
क्यों चुना? ::
मुझे समझ में आता है क्योंकि यह परंपरागत रूप से नेमस्पेस को अलग करता है, लेकिन #
शायद एक प्रतीक था जिसका उपयोग अन्य नामकरण में नहीं किया गया था और अनजाने में एक इंस्टेंस-विधि विभाजक के रूप में पहचाना जा सकता था।
स्रोत
2010-06-26 12:32:54
मैं जानना चाहता हूं कि रूबी के नामकरण सम्मेलनों पर चर्चा करते समय पुस्तकें/ट्यूटोरियल में इस सम्मेलन का उल्लेख/व्याख्या क्यों नहीं किया गया है। मैंने विभिन्न चर्चाओं में '#' उपसर्ग के साथ विधि नाम देखने में भ्रमित पाया और केवल यह अनुमान लगाने में सक्षम था कि उपसर्ग का क्या महत्व था। तथ्य यह है कि '# '.rb स्रोत में एक टिप्पणी शुरू करता है यह दोगुना भ्रमित करता है। जैसा कि आप कल्पना कर सकते हैं, यह खोजना सबसे आसान बात नहीं है, इसलिए इसे कहीं पूछने के लिए धन्यवाद, मैं उस पर ठोकर खा सकता था। मुझे आश्चर्य है कि अगर मैं 6 महीने के गैर-रूबी गतिविधि में इन विवरणों को भूल जाता हूं तो मैं इसे फिर से ढूंढ पाऊंगा ... –