मुझे प्रत्येक ऑब्जेक्ट पर Kernel
विधियों को कॉल करने में सक्षम होना चाहिए, और format
विधि Kernel
पर परिभाषित की जानी चाहिए। method_missing
कोपर तीसरा उदाहरण क्यों दिया गया है?कर्नेल विधि केवल तभी देखी जाती है जब 'प्रेषण' का उपयोग किया जाता है?
class A
def method_missing(meth, *args, &block)
if meth == :foo
puts 'ok'
elsif meth == :format
puts 'ok'
end
end
end
a = A.new
a.foo # => ok
a.send(:foo) # => ok
a.format # => ok
a.send(:format) # => too few arguments (ArgumentError)
इस के लिए स्वीकृत उत्तर बदल गया, क्योंकि यह वास्तव में 'प्रेषण' बनाम प्रत्यक्ष कॉल मेलसमूह बेहतर बताता है। –