■
moduleとは?
メソッドを格納できるものです、メソッドを入れるための箱的なニュアンスで考えてください
module Number def plus(num1, num2) num1 + num2 end end
module モジュール名 メソッド end
moduleの特徴
多重承継
多重承継をするため、rubyは単一承継と呼ばれるクラスを一つしか承継できない仕様になっています。そこでclassを合わせて、モジュールを使用するすることで、擬似的に多重継承を行っているようにコードを書くことができます
処理の種類ごとに分離することができる
例えば「name」メソッドを同じプログラムで二つ用意したくなったとします。 普通に書くと、同じメソッド名のメソッドは定義できません。 しかし以下のようにモジュールで名前空間を分けることで、二つのnameメソッドを定義することができます。
module Dog def name #Dog用のname処理 end end module Cat def name #Cat用のname処理 end end
moduleを使う
module TestModule def Min(x, y) if x < y return x else return y end end def Max(x, y) if x > y return x else return y end end module_function :Min module_function :Max end puts TestModule.Min(1, 5) puts TestModule.Max(1, 5)
モジュール内のメソッドを実行するには、
「module_function :メソッド名」
のように、module_functionでmodule_functionメソッドを使い、メソッドをモジュール関数にすることで呼び出すことができるようになります。
また、モジュールを実行するには「TestModule.Min(1, 5)」のように、
「モジュール名.メソッド名」
と指定する必要があります。