Ruby - remove_const:文件

时间:2011-09-22 11:03:59

标签: ruby metaprogramming

这段代码在做什么?

class Object
   remove_const :File
end

是否完全删除了[1]班级?当我在那段代码之后调用File.instance_methods时,它只显示从Object / Kernel继承的方法。

是否可以将其恢复为原始状态?我的意思是,在使用remove_const之后,有没有办法让课程恢复原状? (之前没有保存类定义。)

[1]抱歉使用“删除”一词

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,我们将获得“未初始化的常量”文件”。因此,在这种情况下,文档会产生误导......

相关问题