我怎样才能获得所有定义的类?

有没有办法获取所有已定义的类的列表。 我正在寻找这样的代码:

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