在类delcaration之后设置类继承或在const_set类上设置类继承

Cor*_*ook 12 ruby dynamic

如果先前已经定义了一个类,我怎么能告诉它继承类Parent

例如:

class Parent
  ..
end

class Klass
  ..
end
Run Code Online (Sandbox Code Playgroud)

现在我希望它继承自Parent

我无法重新打开课程并设置它,因为我会收到课程不匹配错误

class Klass < Parent
  ..
end
Run Code Online (Sandbox Code Playgroud)

具体来说,我试图找出如何在通过Object.const_set创建的类上设置类继承

klass = Object.const_set('Klass', Class.new)
Run Code Online (Sandbox Code Playgroud)

如何告诉Klass从类Parent继承?

sep*_*p2k 26

无法更改已存在的类的超类.

要指定要动态创建的类的超类,只需将超类作为参数传递给Class.new.

class Parent
end
klass = Class.new(Parent)
klass.superclass #=> Parent
Run Code Online (Sandbox Code Playgroud)

正如旁注:你没有创建课程const_set.你是用它创建它的Class.new.您只需将创建的类存储在常量中const_set.一旦const_set被调用,Class.new已经发生并且超级类不能再被更改了.