is_a?, kind_of? を使ってみる (Ruby)
Ruby
Published: 2020-02-16

やったこと

is_a?kind_of? を使ってみます。

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

調査

is_a? と kind_of? の違いはあるのか

下記を見ると、全く同じメソッドのようです。

ruby/object.c at 6b86549df8f6d48eeab3c7b48b3fd9ee02f744ba · ruby/ruby

動かしてみる

is_a.rb

module M
end

class Sample < Object
end

obj = Sample.new


p 'is_a?'
p obj.is_a?(Sample)
p obj.is_a?(Object)
p obj.is_a?(M)
p obj.is_a?(Integer)

p 'kind_of?'
p obj.kind_of?(Sample)
p obj.kind_of?(Object)
p obj.kind_of?(M)
p obj.kind_of?(Integer)

出力結果

$ ruby is_a.rb
"is_a?"
true
true
false
false
"kind_of?"
true
true
false
false

参考