Ruby:动态继承

Ruby:动态继承,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有两个基类和多个子类。。基于该类型,子类动态继承自基父类 例如: 如何将父类动态分配给子类?仅在创建时,我将选择子类及其相应的父类来进一步进行也许您正在寻找这个 Child = Class.new Parent do def foo "foo" end end Child.ancestors # => [Child, Parent, Object, Kernel] Child.new.bar # => "bar" Child.new.foo #

我有两个基类和多个子类。。基于该类型,子类动态继承自基父类

例如:


如何将父类动态分配给子类?仅在创建时,我将选择子类及其相应的父类来进一步进行

也许您正在寻找这个

Child = Class.new Parent do
  def foo
    "foo"
  end
end

Child.ancestors   # => [Child, Parent, Object, Kernel]
Child.new.bar     # => "bar"
Child.new.foo     # => "foo"

当父母是爸爸妈妈时,通常你不能,但你可以用一些“邪恶”来形容

首先,您需要安装一个名为“rubynline”的gem,这样才能工作

然后,您可以像这样对
类进行猴子式修补:

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)

你为什么要这么做?您试图实现什么?为了深入解释,让我们假设有两种类型的公司,服务和产品(父类)。除此之外,还有“n”类子公司继承父类特性,并且将拥有自己的特性和功能。仅在创建时,我将选择子类及其相应的父类以继续。。
Child2.set_super(New_Parent_Class)