我怎样才能获得所有定义的类?
有没有办法获取所有已定义的类的列表。 我正在寻找这样的代码:
Class.instances.each do |klass| puts klass.name end
如果没有办法做到这一点。 可以定义一个A类,使其后代在其中注册? 例如这样:
class A ... end class B < A end class C [B, C]
p ObjectSpace.each_object(Class){|ob| p ob}
ObjectSpace可以帮助您获取类的所有实例。 这将返回所有已定义的类
ObjectSpace.each_object(Class)
除了ObjectSpace
,还可以inherited
一个您可以定义的智能钩子方法,Ruby每次将其类子类化时都会调用它。
class A @sub_classes = [] def self.inherited(sub_class) @sub_classes << sub_class end end