方法查找" missing_method"在红宝石

时间:2015-04-28 09:52:52

标签: ruby

如果方法存在,我对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 方法采用什么类型的参数。

1 个答案:

答案 0 :(得分:1)

  

方法查找method_missing的方法是否再次从找到所谓方法(未找到)的方法查找的相同位置开始?

是。