Mac で試せる
irb
前提
module ParentModule; end
module ChildModule; end
class ParentClass
include ParentModule
end
class ChildClass < ParentClass
include ChildModule
end
child_instance = ChildClass.new
is_a?メソッド
child_instance.is_a? ChildClass #=> true
child_instance.is_a? ParentClass #=> true
child_instance.is_a? Object #=> true
child_instance.is_a? String #=> false
child_instance.is_a? ParentModule #=> true
child_instance.is_a? ChildModule #=> true
-
is_a?メソッドがTrueを返す場合
レシーバが引数の- クラスの直接のインスタンス、もしくは、
- そのサブクラスのインスタンス、もしくは、
- モジュールをインクルードしたクラス、もしくは、
- そのサブクラスのインスタンスであれば、trueを返す
(is_a の意味は、is one of ~ の意味なのかもしれない)
instance_of? メソッド
child_instance.instance_of? ChildClass #=> true
child_instance.instance_of? ParentClass #=> false
child_instance.instance_of? Object #=> false
child_instance.instance_of? String #=> false
child_instance.instance_of? ParentModule #=> false
child_instance.instance_of? ChildModule #=> false
- instance_of?メソッドがTrueを返す場合
- レシーバが引数で指定されたクラスの直接のインスタンスの場合、trueを返す