我正在学习ruby元编程的元类概念。我试图在元类中动态定义方法,但我面临的问题是我无法访问" name"里面的元类。
以下是我的代码。
class Abc
def add_method(name)
class << self
define_method "#{name}" do
end
end
end
end
a = Module.const_get("Abc").new
a.add_method("my_method")
a.my_method
答案 0 :(得分:0)
确定。经过一些在线调试后得到了解以下是解决方案
class Abc
def add_method(name)
meta_class = class << self
self
end
meta_class.class_eval do
define_method "#{name}" do
end
end
end
end
a = Module.const_get("Abc").new
a.add_method("my_method")
a.my_method