tôi nên có thể gọi Kernel
phương pháp trên tất cả các đối tượng, và phương pháp format
được định nghĩa trên Kernel
. Tại sao method_missing
gọi trên Kernel
với ví dụ thứ ba?Tại sao phương pháp Kernel nhìn lên chỉ khi `send` được sử dụng?
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)
Thay đổi câu trả lời được chấp nhận với trang này, vì nó thực sự giải thích 'send' vs không phù hợp cuộc gọi trực tiếp tốt hơn. –