【发布时间】:2013-01-03 03:49:14
【问题描述】:
正如标题所示,我想将一个类上定义的所有实例方法分配给另一个类。我知道我可以得到我想从ClassA 复制到ClassB 的方法列表,如下所示:
ClassA.instance_methods(false)
我想我可以像这样在ClassB 上定义它们:
ClassA.instance_methods(false).each do |method_name|
ClassB.method_define(method_name, [body here??])
end
有没有办法获取对应的方法体,如果有,这个方法能用吗?如果没有,有没有办法做到这一点?
【问题讨论】:
-
为什么要这样做?你有什么理由不能使用 mix-ins /modules 来完成这个任务?
-
@John:我不认为 OP 是不懂子类化概念的菜鸟。你为什么不从字面上理解他的问题呢?
-
您的代码与您的标题相矛盾。您希望 ClassA 和 ClassB(不是它的单个实例)共享相同的方法。 John Naegle 的答案是正确的:将 ClassA 的所有实例方法移动到一个模块中,然后将此模块包含到两个类中。
标签: ruby metaprogramming