我有两个基类和多个子类。基于类型,子类动态继承基父类。
,
class Dad
def initialize
#initialize some stuffs
end
end
class Mom
def initialize
#initialize some stuffs
end
end
class child
def initialize
super
#initialize some stuffs
end
end
class child2
def initialize
super
#initialize some stuffs
end
end
class child3
end
如何动态地将父类分配给子类?仅在创建时,我将选择子类及其适当的父类以进一步进行
通常你不能,但你可以用一些'邪恶'。
首先,你需要安装一个名为"RubyInline"的gem。
然后你像这样给Class
类打补丁:
require 'inline'
class Class
inline do |builder|
builder.c %{
VALUE set_super(VALUE sup) {
RCLASS(self)->super = sup;
return sup;
}
}
builder.c %{
VALUE get_super() {
return RCLASS(self)->super;
}
}
end
end
这将允许您获取和设置特定类的超类(直接继承的类)。
然后你可以这样做:
Child2.set_super(New_Parent_Class)
也许你正在寻找这个
Child = Class.new Parent do
def foo
"foo"
end
end
Child.ancestors # => [Child, Parent, Object, Kernel]
Child.new.bar # => "bar"
Child.new.foo # => "foo"
其中parent
为妈妈/爸爸