多级元编程 method_missing
Metaprogramming multi-level method_missing
我希望能够为模块中的两级幽灵方法提供动态代理。我假设第一级需要动态创建一个模块,其中包含一个变量,用于跟踪我的第一级调用的名称,并且缺少一个方法来接受我的第二级调用,但我不知道如何打开这进入工作代码。
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
应该允许我编写一个可以使用 test1
、test2
和 *args
.
的代理
我怎样才能实现这个想法?
编辑:我解决了第 2 级问题,但是有什么方法可以让我获得无限数量的级别吗?
我想通了:
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
我希望能够为模块中的两级幽灵方法提供动态代理。我假设第一级需要动态创建一个模块,其中包含一个变量,用于跟踪我的第一级调用的名称,并且缺少一个方法来接受我的第二级调用,但我不知道如何打开这进入工作代码。
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
应该允许我编写一个可以使用 test1
、test2
和 *args
.
我怎样才能实现这个想法?
编辑:我解决了第 2 级问题,但是有什么方法可以让我获得无限数量的级别吗?
我想通了:
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