15

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

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

谢谢

4

2 回答 2

25

您是要查看一个类的所有祖先还是后代?对于祖先,使用:

Class.ancestors

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

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

编辑:

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

于 2009-10-19T18:21:52.953 回答
6

模块#ancestors

例子:

class Foo
end

class Bar < Foo
end

Bar.ancestors # => [Bar, Foo, Object, Kernel]
于 2009-10-19T18:18:23.690 回答