testing一个Ruby类是否是另一个类的子类
我想testing一个类是否从另一个类inheritance,但似乎没有一个方法。
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
也提供:
B.ancestors.include? A
这与B < A
答案略有不同,因为B
包含在B.ancestors
:
B.ancestors #=> [B, A, Object, Kernel, BasicObject] B < B #=> false B.ancestors.include? B #=> true
这是否可取取决于您的使用情况。