モジュールを関数のように使う
モジュールはクラスのようにオブジェクトを作成することは出来ませんので、モジュールの使用方法は関数のようにモジュール内に定義されたメソッドを実行するか、又はクラスの中にインクルードするかの二通りがあります。ここでは関数のように使用する方法を確認します。
例として次のようなモジュールを作成します。
module SuuchiModule def minValue(x, y) if x < y return x else return y end end def maxValue(x, y) if x > y return x else return y end end end
このモジュールは数値関係のメソッドを定義したモジュールとなっています。
モジュールを関数のように実行するにはモジュール内のメソッドをモジュール関数として実行できるように設定する必要があります。設定は次のように行います。
module_function :メソッド名
「module_function」の後にコロン(:)の後にメソッド名を記述します。先ほどの例であれば次のように記述します。
module SuuchiModule def minValue(x, y) if x < y return x else return y end end def maxValue(x, y) if x > y return x else return y end end module_function :minValue module_function :maxValue end
これで「minValue」メソッドと「maxValue」メソッドは関数のように実行することが出来ます。
次に実行が許可されたメソッドを実行するには次のように実行します。
モジュール名.メソッド名
モジュールはクラスのようにオブジェクトを作成出来ませんので、このようにモジュール名を指定してメソッドを実行します。
module SuuchiModule def minValue(x, y) if x < y return x else return y end end def maxValue(x, y) if x > y return x else return y end end module_function :minValue module_function :maxValue end print(SuuchiModule.minValue(10, 8), "¥n") print(SuuchiModule.maxValue(10, 8), "¥n")
以上のようにモジュールの中で定義されたメソッドを関数のように呼び出すことが出来ます。
モジュールをインクルードする
前述したようにモジュールに含まれるメソッドは「モジュール名.メソッド名」のように実行します。ただ実行する回数が多い場合などは先にモジュールをインクルードしておくことで単に「メソッド名」の形で実行することも出来ます。
モジュールをインクルードするには次のように記述します。
include モジュール名
「include」文を記述してモジュールをインクルードした後であればモジュールに含まれるメソッドを「メソッド名」と言う形式で実行することが出来ます。
module SuuchiModule def minValue(x, y) if x < y return x else return y end end def maxValue(x, y) if x > y return x else return y end end module_function :minValue module_function :maxValue end include SuuchiModule print(minValue(10, 8), "¥n") print(maxValue(10, 8), "¥n")
サンプルプログラム
では実際にサンプルプログラムを作成してみます。
module SuuchiModule def minValue(x, y) if x < y return x else return y end end def maxValue(x, y) if x > y return x else return y end end module_function :minValue module_function :maxValue end include SuuchiModule print(minValue(10, 8), "¥n") print(maxValue(10, 8), "¥n")
上記を実行すると次のように表示されます。
( Written by Tatsuo Ikura )