【发布时间】:2015-12-02 15:25:47
【问题描述】:
我有一堂课:
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)
然后重新加载,但这既麻烦又烦人。有没有更简单的方法来强制重新加载而不会遇到此问题?
【问题讨论】:
-
不清楚“将名称字段抽象为父类”是什么意思。
-
我想知道你的开发过程是什么样的,当你试图避免重新加载更改的代码时......
-
尝试改用mixin
-
我并不想避免重新加载。我正在尝试消除
Object.send(:remove_const, ...)步骤。 -
@SilvioMayolo 你如何重新加载你的代码?您是否有在运行时修改的长时间运行的进程?
标签: ruby inheritance refactoring