rubyでクラスの型を確認

継承元を含めているかどうかを確認します。

class Hoge
end

class Foo < Hoge
end

hoge = Hoge.new
foo = Foo.new

===演算子

p Hoge === hoge
→ true
p Foo === foo
→ true
p Hoge === foo
→ true

is_a?

p hoge.is_a?(Hoge)
→ true

p foo.is_a?(Foo)
→ true
p foo.is_a?(Hoge)
→ true

instance_of?

p hoge.instance_of?(Hoge)
→ true
p foo.instance_of?(Foo)
→ true
p foo.instance_of?(Hoge)
→ false

instance_of?はインスタンスの確認なんで、結果が異なるんですね。

当たり前か。

以上です。

他に調べる方法があれば教えてください!