有一点疑惑,不知道有谁可以帮我解答。
请看一下这个例子:
class B
B.class_eval do
Object.send :define_method, :n do #此处,为什么Object可以调用 define_method?
p "define_method..."
end
end
B.n #=> define_method...
p Module.private_instance_methods.grep /^define_method/ #=> [:define_method]
p Object.private_instance_methods.grep /^define_method/
p Kernel.private_instance_methods.grep /^define_method/
define_method 是 Module 中的一个私有方法,Object 是 Module 的一个超类,根据 ruby 的 ancestor 链,方法是从下往上查找, 1.为什么 Object 类可以使用它下层类的方法?? 2.还有一个问题是,define_method 是 Module 中的一个私有方法,那么下层继承的类是怎么可以使用这个私有方法的?