这段代码在做什么?
class Object
remove_const :File
end
是否完全删除了[1]班级?当我在那段代码之后调用File.instance_methods
时,它只显示从Object / Kernel继承的方法。
是否可以将其恢复为原始状态?我的意思是,在使用remove_const
之后,有没有办法让课程恢复原状? (之前没有保存类定义。)
[1]抱歉使用“删除”一词
答案 0 :(得分:1)
根据文件:http://apidock.com/ruby/Module/remove_const
“无法删除预定义的类和单例对象(例如true)。”
所以这个方法对File类没有任何作用。这就是您可以在instance_methods
上使用File
的原因。类文件仍然存在。
当您删除某个类时,如果要再次使用它,则必须再次加载它(或运行此类代码)。
重要编辑:这是理论,但实践表明(在评论中指出了undur_gongor和Andrew Grimm),使用Ruby 1.8.7和Ruby 1.9.2,我们将获得“未初始化的常量”文件”。因此,在这种情况下,文档会产生误导......