instance_of?とis_a?の違い
instance_of?とis_a?の違いを、メモ。
以下のものを用いて実験
module Foo; end module Bar; end class Hoge include Foo end class Fuga < Hoge include Bar end fuga = Fuga.new
instance_of?
fuga.instance_of? Fuga #=> true fuga.instance_of? Hoge #=> false fuga.instance_of? Object #=> false fuga.instance_of? Foo #=> false fuga.instance_of? Bar #=> false
- selfが、引数で指定されたクラスの直接のインスタンスの場合、trueを返す
is_a?メソッド
fuga.is_a? Fuga #=> true fuga.is_a? Hoge #=> true fuga.is_a? Object #=> true fuga.is_a? Foo #=> true fuga.is_a? Bar #=> true
kind_of?メソッド
# aliasを張っているだけなので、is_a?メソッドと同じ # Hoge === fugaも同様