Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Module | ===

概要

Module#=== obj -> bool

詳細

指定された obj が

条件 戻り値
自身かそのサブクラスのインスタンスであるとき true
obj が自身をインクルードしたクラスかそのサブクラスのインスタンスであるとき true
その他 false

obj.kind_of?(SomeClass)と同じ。
'===' は case-when の時に利用される。

サンプルコード
require 'tbpgr_utils'

module ParentModule
end

class ImplModuleClass
  include ParentModule
end

class ExtendedClass < ImplModuleClass;end

class LonelinessClass;end

imc = ImplModuleClass.new
ec = ExtendedClass.new

bulk_puts_eval binding, <<-EOS
ParentModule === imc
ImplModuleClass === imc
ParentModule === ec
ImplModuleClass === ec
ExtendedClass === ec
LonelinessClass === ec
EOS

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

出力

ParentModule === imc    # => true
ImplModuleClass === imc # => true
ParentModule === ec     # => true
ImplModuleClass === ec  # => true
ExtendedClass === ec    # => true
LonelinessClass === ec  # => false