概要
Module.new -> Module
Module.new {|mod| ... } -> Module
詳細
無名モジュールを生成する。
ブロックを使用した場合は、生成したモジュールのコンテキストで
ブロック内の処理を実行できる。
サンプルコード
require 'tbpgr_utils' m = Module.new print m, "\n" print m.name.nil?, "\n" class Hege;end if rand(2) == 0 Hoge = m m.module_eval do define_method :hoge do 'hoge' end end class Hege include Hoge end else Hige = m m.module_eval do define_method :hige do 'hoge' end end class Hege include Hige end end bulk_puts_eval binding, <<-EOS m.name Hege.ancestors EOS __END__ 下記はTbpgrUtils gemの機能 bulk_puts_eval https://rubygems.org/gems/tbpgr_utils https://github.com/tbpgr/tbpgr_utils
出力
出力1
#<Module:0x647418> true m.name # => "Hoge" Hege.ancestors # => [Hege, Hoge, Object, Kernel, BasicObject]
出力2
#<Module:0x1e07410> true m.name # => "Hige" Hege.ancestors # => [Hege, Hige, Object, Kernel, BasicObject]