有人使用了“摧毁一个类”的短语,我怀疑这意味着什么,并决定进行搜索,看起来像破坏类似乎是一个真实的概念,如How to properly destroy a class所示
摧毁一个班级意味着什么? 我如何在Ruby中销毁一个类? (如果这有意义的话)
答案 0 :(得分:3)
相当于毁灭,你可以remove the constant。记住class
(s)只不过是常数。
class C;end
C.name # => "C"
self.class.send(:remove_const,:C)
C.name # uninitialized constant C (NameError)
执行class C;end
时,表示您正在创建Class
实例(常量赋值)并将该实例分配给常量C
。实际执行取消分配的#remove_const
方法,并返回Class
实例,您可以将其分配给另一个常量。
class C
def self.foo
12
end
end
C.foo # => 12
M = self.class.send(:remove_const,:C)
M.foo # => 12
C.foo # uninitialized constant C (NameError)
答案 1 :(得分:1)
要学习的最重要的规则是,在Ruby中,销毁类与销毁任何其他对象没有什么不同。通常,您有一些固定类分配给常量,永远不会被销毁。创建参数化子类(同样是类Class
)是一个很好但却相当不充分的实践,它可能在程序执行期间被破坏,就像任何其他对象一样。破坏本身由垃圾收集器执行,这通常与程序员无关。
注意:您链接的文章不是讨论破坏类,而是讨论实例化和销毁实例。