如果方法存在,我对ruby中的方法查找非常熟悉。令我困惑的是以下内容:
Ruby调用method_missing
方法,如果它在层次结构中找不到该名称的方法,直到最高级别。
如果我在层次结构树中覆盖method_missing
方法,然后调用一个不在树中的方法,并且在完成所有操作并且没有找到这样的方法之后,它是如何从树中执行被覆盖的{ {1}}在低阶类或模块中?
method_missing
的方法查找是否再次从找到所谓方法(未找到)的方法查找的同一位置开始?
简单的代码如下。我知道ruby用户非常熟悉它:
method_missing
预期输出为:
module M
def report
puts "module M method report()"
end
def method_missing(ob)
puts ob.class
puts "No such method found"
end
end
class C
include M
end
class D < C
end
obj = D.new
obj.report
obj.unkown_method
第二行输出只是为了检查这个module M method report()
Symbol
No such method found
方法采用什么类型的参数。
答案 0 :(得分:1)
方法查找method_missing的方法是否再次从找到所谓方法(未找到)的方法查找的相同位置开始?
是。