Rubyリファレンス: Home

is_a?, kind_of? (Object)

Edit   History

標準クラス・モジュール > Object > is_a?, kind_of?

obj.is_a?(klass)
obj.kind_of?(klass)

is_a?メソッドまたはkind_of?メソッドは、レシーバのオブジェクトが引数klassクラスのインスタンスであればtrue、そうでなければfalseを返します。

instance_of?メソッドとは違い、レシーバが属するクラスだけでなく、レシーバが属するクラスの親クラスやインクルードしているモジュールをklassに指定してもtrueが返ります。

次の例では、配列arrArrayクラスのインスタンスですが、ArrayクラスはObjectを親クラスとし、Enumerableモジュールをインクルードしているので、ArrayObjectEnumerableのどれをkind_of?に渡してもtrueになります。

arr = [1, 2, 3]
puts arr.kind_of?(Hash)
puts arr.kind_of?(Array)
puts arr.kind_of?(Object)
puts arr.kind_of?(Enumerable)
false
true
true
true

関連項目