Ruby

Ruby の モジュール(Module)

More than 1 year has passed since last update.

用途

クラスにメソッドを追加する。

特徴

  • モジュールはインスタンス化できない。
  • モジュールは何かのクラスを継承できない。

書き方

module Hoge

  def hello
    p "Hello"
  end

end

モジュールの読み込み

include モジュール名

モジュールのメソッドをインスタンスメソッドとして取り込む。

class Fuga
  include Hoge
end

Fuga.new.hello

=> "Hello"

extend モジュール名

モジュールのメソッドをクラスメソッドとして取り込む。

class Fuga
  extend Hoge
end

Fuga.hello

=> "Hello"

モジュール関数

モジュールに定義されているメソッドを、モジュールから直接呼び出せるようにする。

module_functionの引数にメソッド名が指定された場合はそのメソッドが、指定されなければそれ以降に定義されたメソッドがモジュール関数となる。

module Hoge

  def hello
    p "Hello"
  end

  module_function :hello

end

Hoge.hello

=> "Hello"