元编程多级方法_丢失

时间:2015-09-01 18:04:04

标签: ruby metaprogramming

我希望能够在模块中使用两级ghost方法的动态代理。我假设第一级需要动态创建一个带有变量的模块,该变量跟踪我的第一级调用的名称,以及一个接受我的第二级调用的方法,但是我对如何转向感到茫然这就是工作代码。

module Test
    def self.method_missing(name, *args)
        #dynamically create a module and return it
        #so my 2nd level call hits its method_missing
    end
end

Test::test1::test2应该允许我编写可以使用test1test2*args的代理。

我如何实现这个想法?

编辑:我解决了第二级但有没有任何方法可以让我获得无限数量的级别?

1 个答案:

答案 0 :(得分:0)

我明白了:

module Test
    def self.method_missing(name, *args)
        m = Module.new
        m.instance_variable_set("@name", name)
        def m.method_missing(name1, *args)
            puts @name
            puts name1
        end
        m
    end
end

Test::test1::test2
#Output:
#  test1
#  test2