repl.info

Rubyでオブジェクトのスーパークラスを遡って取得する

Rubyでクラスの親クラスを取得するには、Class#superclassを使えばよいという事を知った。 なので、BasicObjectまで遡れば継承している全ての親クラスを取得することができる。

``` ruby class Foo end

class Bar < Foo end

class Hoge < Bar end

class Class def all_superclass def recur(c, a) return !c.superclass ? a : recur(c.superclass, a.push(c.superclass)) end recur(self, []) end end

p Hoge.all_superclass ```

実行結果はこう。

`sh

$ ruby ./get_all_superclass.rb

[Bar, Foo, Object, BasicObject]`

任意のクラスを継承しているか判別するのに使えると思う。