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

モジュール#祖先

例:

class Foo
end

class Bar < Foo
end

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