1. ホーム
  2. ruby

[解決済み】Rubyのクラスが他のクラスのサブクラスであるかどうかをテストする

2022-04-14 12:21:42

質問

あるクラスが他のクラスを継承しているかどうかをテストしたいのですが、そのためのメソッドが存在しないようです。

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

が、これはすでに存在していると思われます。

どのように解決するのですか?

を使用するだけです。 < 演算子

B < A # => true
A < A # => false

を使用するか <= 演算子

B <= A # => true
A <= A # => true