Ruby モジュールの簡単な使い方

  • 作成日 2021.06.10
  • 更新日 2022.03.02
  • Ruby
Ruby モジュールの簡単な使い方

Rubyで、モジュールの簡単な使い方を記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

モジュール作成

rubyは、以下の構文でモジュールを作成することが可能です。

module モジュール名(先頭は英数字の大文字)
  処理
end

構文に従い、適当なモジュールを作成して実行してみます。

module Hoge
  p "Hello World"
end
# "Hello World"

先頭の文字に小文字を使用するとエラーとなります。

module hoge
  p "Hello World"
end
# class/module name must be CONSTANT

関数として使用

モジュールは、関数のように使用することが可能です。

module Hoge
  def mul(x, y)
    return x * y
  end

  def div(x, y)
    return x / y
  end

  module_function :mul
  module_function :div
end

p Hoge.mul(6, 3) # 18
p Hoge.div(6, 3) # 2

クラスにincludeして使用することもできます。

module Hoge
  def mul(x, y)
    return x * y
  end

  def div(x, y)
    return x / y
  end
end

class Foo
  include Hoge
end

foo = Foo.new

p foo.mul(6, 3) # 18
p foo.div(6, 3) # 2

クラス内でモジュールを使用することも可能です。

module Hoge
  def mul(x, y)
    return x * y
  end

  def div(x, y)
    return x / y
  end
end

class Foo
  include Hoge

  def bar(x, y)
    p mul(x, y)
  end
end

foo = Foo.new

foo.bar(6, 3) # 18

インスタントメソッドとして使用

モジュールは、以下のようにインスタントメソッドとしても使用できます。

module Hoge
  def mul(x, y)
    return x * y
  end

  def div(x, y)
    return x / y
  end
end

class Foo
  include Hoge
end

foo = Foo.new

# インスタントメソッドとして利用
p foo.mul(6, 3)
# 18

クラスメソッドとして使用

モジュールは、extendを使用すれば、クラスメソッドとしても使用できます。

module Hoge
  def mul(x, y)
    return x * y
  end

  def div(x, y)
    return x / y
  end
end

class Foo
  extend Hoge
end

# クラスメソッドとして利用
p Foo.div(6, 3) # 2

名前空間として使用

モジュールは、以下のように名前空間としても使用できます。

module Hoge
  class Foo
    def self.hello
      p "Hello Wold"
    end
  end
end

class Foo
  def self.hello # クラスメソッド
    p "こんにちは世界"
  end
end

Hoge::Foo.hello
# "Hello Wold"

Foo.hello
# "こんにちは世界"