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

时间:2009-10-19 18:14:13

标签: ruby hierarchy class-hierarchy

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

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

由于

2 个答案:

答案 0 :(得分:23)

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

Class.ancestors

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

ObjectSpace.each_object(Class) do |klass| 
  p klass if klass < StandardError
end

修改

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

答案 1 :(得分:6)

Module#ancestors

示例:

class Foo
end

class Bar < Foo
end

Bar.ancestors # => [Bar, Foo, Object, Kernel]