Ruby中的超类不匹配

时间:2015-12-02 15:25:47

标签: ruby inheritance refactoring

我有一个班级:

class Example
  attr_reader :name
  ...
end

我后来决定将name字段抽象为父类,以便可以重复使用。当我使用load 'filename.rb'

加载此代码时
class Named
  attr_reader :name
  ...
end
class Example < Name
  ...
end

我得到TypeError: superclass mismatch for class Example因为我试图重新打开Example类并更改其超类,这是不允许的。

为了解决这个问题,我一直在手动删除课程:

Object.send(:remove_const, :Example)

然后重新加载,但这很麻烦而烦人。是否有更简单的方法来强制重新加载而不会遇到此问题?

1 个答案:

答案 0 :(得分:1)

没有。一旦定义了类,就无法更改它的父级。