Tbpgr Blog

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

Ruby | Module | <=

概要

Module#<= other -> bool | nil

詳細

比較演算子。self が other の子孫であるか同一クラスである場合、 true を返却
self が other の先祖のクラス/モジュールの場合、 false を返却
継承関係にないクラス同士の比較では nil を返却

サンプルコード
require 'tbpgr_utils'

module ParentModule
end

class ImplModuleClass
  include ParentModule
end

class ExtendedClass < ImplModuleClass;end

class LonelinessClass;end

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

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

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

出力

出力

ImplModuleClass <= ParentModule    # => true
ParentModule <= ParentModule       # => true
ParentModule <= ImplModuleClass    # => false
ExtendedClass <= ImplModuleClass   # => true
ExtendedClass <= ExtendedClass     # => true
ImplModuleClass <= ExtendedClass   # => false
ExtendedClass <= ParentModule      # => true
ParentModule <= ExtendedClass      # => false
ParentModule <= ParentModule       # => true
ParentModule <= ParentModule       # => true
ParentModule <= LonelinessClass    # => nil
LonelinessClass <= LonelinessClass # => true
LonelinessClass <= ParentModule    # => nil