Ruby:动态继承



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

,

 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为妈妈/爸爸

相关内容

  • 没有找到相关文章

最新更新