特定のクラスが別のクラスを継承しているか判定する方法

More than 5 years have passed since last update.

例えばAクラスがBクラスを継承しているかどうかを調べるには、Class moduleのマニュアルにあるように比較演算子が使える。

http://doc.ruby-lang.org/ja/1.9.3/class/Module.html


継承している場合 => trueが返ってくる

trueが返ってくる

A < B # => true


逆にBをAクラスが継承している場合、AとBが同じクラスの場合 => falseが返ってくる

A < B # => true


AとBが全く継承関係にない場合 => nilが返る

A < B # => nil


追記

でも同じ事するならこっちの方が意図が伝わりやすいよね。っと@nappaからツッコミがあったのでメモ。

Integer.ancestors.include?(Numeric)