ruby是否提供了显示层次结构调用的方法?

fly*_*r88 15 ruby hierarchy class-hierarchy

这就是全部,我想看看继承固定类的clases是什么.在RUBY中有一种方法吗?

Aptana提供了一个显示此选项的选项,但是有什么方法吗?

谢谢

Gre*_*ell 23

您是否要求查看班级的所有祖先或后代?对于祖先,使用:

Class.ancestors
Run Code Online (Sandbox Code Playgroud)

然而,对于后代而言,没有"开箱即用"的可比方法.您可以使用ObjectSpace,如下所示,但它很慢,并且可能无法跨Ruby实现移植:

ObjectSpace.each_object(Class) do |klass| 
  p klass if klass < StandardError
end
Run Code Online (Sandbox Code Playgroud)

编辑:

也可以使用Class#inherited hook来跟踪子类.但是,这不会捕获在定义跟踪功能之前创建的任何子类,因此它可能不适合您的用例.但是,如果您需要以编程方式在应用程序中定义的类上使用该信息,那么这可能是最佳选择.


Avd*_*vdi 6

模块#祖先

例:

class Foo
end

class Bar < Foo
end

Bar.ancestors # => [Bar, Foo, Object, Kernel]
Run Code Online (Sandbox Code Playgroud)