Tester si une classe Ruby est une sous-classe d'une autre classe

Je voudrais tester si une classe hérite d'une autre classe, mais il ne semble pas exister une méthode pour cela.

class A
end

class B < A
end

B.is_a? A 
=> false

B.superclass == A
=> true

Une implémentation simple de ce que je veux serait:

class Class
  def is_subclass_of?(clazz)
    return true if superclass == clazz
    return false if self == Object
    superclass.is_subclass_of?(clazz)
  end
end

mais je voudrais attendre à ce que cela existe déjà.

  • A.class #=> Class. C'est pourquoi B.is_a? A renvoie la valeur false.
  • qu'en est kind_of?
  • kind_of? teste si un objet est une instance d'une classe. Pas si l'objet hérite d'une classe.
  • kind_of? est un alias de is_a?
InformationsquelleAutor Confusion | 2010-12-28