जब एक class << self
परिभाषा के अंदर const_missing
और अन्य वर्ग के तरीकों को परिभाषित करने के रूप में def self.foo
सिंटैक्स का उपयोग करने के लिए विरोध कर रहा हूँ मैं बहुत रूबी के व्यवहार से उलझन में।गुम निरंतर और "const_missing" अंदर "वर्ग << स्व" परिभाषा
मैं इस तरह कुछ करने के लिए कोशिश कर रहा था:
class Foo
class << self
def foo
puts MISSING
end
def const_missing(name)
puts "#{name} missing"
end
end
end
Foo.foo
मैं ज्यादातर वर्ग पद्धतियां निर्धारित करने के class << self
सिंटैक्स का उपयोग करें। हालांकि, यह उम्मीद के रूप में काम नहीं किया था। const_missing
कभी नहीं कहा जाता है। उपरोक्त परिणाम एक नाम त्रुटि में।
दोनों तरीकों को परिभाषित करना इस काम करता है की तरह के रूप में उम्मीद:
def self.foo
puts MISSING
end
def self.const_missing(name)
puts "#{name} missing"
end
मैंने सोचा था कि class << self
वाक्य रचना वर्ग पद्धतियां निर्धारित करने के सिर्फ एक और तरीका है, लेकिन पूरी तरह def self.foo
के बराबर है? मैंने ऊपर एमआरआई 1.8.7, 1.9.2 और जेआरबी 1.5.6 के साथ परीक्षण किया है। तो जाहिर है मैं यहाँ कुछ याद कर रहा हूँ?
किसी भी संकेत की सराहना की जाती है।
धन्यवाद, मार्टिन
धन्यवाद एक बहुत, LBG। मुझे पता था कि 'वर्ग << स्वयं' एक वर्ग के eigenclass खोलता है। लेकिन चूंकि क्लास विधियां केवल इगेंक्लास के उदाहरण विधियां हैं, मैंने सोचा कि यह इस तरह से काम करेगा। हालांकि, यह पूरी तरह से समझ में आता है कि, eigenclass से लगातार संदर्भित एक वर्ग के रूप में संदर्भित निरंतर के समान नहीं है। कभी-कभी यह पूरी चीज मेरे सिर को स्पिन बनाती है :) – martido