Rubyリファレンス: Home

initialize (Module)

Edit   History

標準クラス・モジュール > Module > initialize

Module.new

クラスメソッドnewは、新しいモジュールを作成して返します。モジュール定義「module モジュール名 ~ end」を使わずにモジュールを作成できます。作成されたモジュールは無名のモジュールになります。

次の例では無名のモジュールmodを作成し、Stringクラスに取り込んでいます。

mod = Module.new
p mod
String.send(:include, mod)
str = "hello"
p str.kind_of?(mod)
#<Module:0x1401cc0>
true
Module.new {|mod| block }

newメソッドにブロックを渡すと、そのブロックをモジュール定義の中であるように実行します。ブロック変数modには新しいモジュールが渡されます。

次の例では、無名のモジュールmoddoubleメソッドを定義し、Stringクラスに取り込んでいます。

mod = Module.new do |m|
  def double
    self + self
  end
end
String.send(:include, mod)
str = "hello"
puts str.double
hellohello

詳細

このnewメソッドの仕様は、実際にはModuleクラスのinitializeメソッドの仕様です。Module.newを実行すると、ClassクラスのnewメソッドとModuleクラスのinitializeメソッドが実行されます。

関連項目