1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Ruby】初学者向け-モジュールとミックスインについて

Posted at

モジュールとミックスインについて

本記事はモジュール・ミックスインについてまとめていきます。

モジュール

…特定のメソッドをまとめておけるもの。
 複数のクラスで使用する共通のメソッドをモジュールとして定義できる。モジュール内に書いたメソッドや定数は様々な箇所で使用できる

example_1.rb
    module TestModule
        CONST_NUM = 100
        
        def const_num
            CONST_NUM
        end
    end

    # モジュールへのアクセス方法1
    puts TestModule::CONST_NUM
    =>100

    # モジュールへのアクセス方法2
    # include <モジュール名>を記述することで、モジュールに定義されたメソッドを関数のように呼び出すことができる
    include TestModule

    # モジュールをincludeした後であれば、モジュール名を省略して定数に直接アクセスすることができる
    puts const_num
    =>100
    puts CONST_NUM
    =>100

単純にモジュールに書いたメソッドに対して直接メソッドを呼び出すことはできない。
しかし、モジュールファンクションとして定義することで
クラスメソッドのようにモジュールのメソッドを呼び出すことができる。

example_1.rb
module TestModule
    def module_function_sum(a, b)
        a + b
    end
    module_function :module_function
end

puts TestModule.module_function_sum(3,3)
=> 6

ミックスイン

 …モジュールの機能をクラスに取り込むことができる。
複数のクラスで使う共通のメソッドをモジュールとして定義しておき、適宜includeして使用したり、特定のメソッドをモジュールとしてまとめておいてユーティリティとして使用するなどの使い方がある。

ユーティリティ

…多目的や汎用性が高いもののこと。

example_2.rb
    module TestModule
        def sum(a, b)
            a + b
        end
    end

    class Test
        # include <モジュール名>を記述することで、モジュールに定義されたメソッドを呼び出すことができる。
        include TestModule

        def call_sum(a, b)
            sum(a, b)
        end
    end

    test = Test.new

    puts test.sum(1,1)
    => 2

    puts test.call_sum(2,2)
    =>4
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?