LoginSignup
6
5

More than 5 years have passed since last update.

Ruby の モジュール(Module)

Posted at

用途

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

特徴

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

書き方

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"

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5