クラスが別のクラスから継承するかどうかをテストしたいのですが、そのためのメソッドが存在しないようです。
class A
end
class B < A
end
B.is_a? A
=> false
B.superclass == A
=> true
私が欲しいものの簡単な実装は次のようになります:
class Class
def is_subclass_of?(clazz)
return true if superclass == clazz
return false if self == Object
superclass.is_subclass_of?(clazz)
end
end
しかし、私はこれがすでに存在することを期待します。
どう
—
ですか
kind_of?
kind_of?
オブジェクトがクラスのインスタンスであるかどうかをテストします。オブジェクトがクラスから継承するかどうかではありません。
kind_of?
の別名ですis_a?
A.class #=> Class
。これがB.is_a? A
falseを返す理由です。