モジュール
module SampleModule
CONST_NUM =100
def const_num
CONST_NUM
end
end
puts SampleModule::CONST_NUM
# moduleをincludeしたあとならモジュール名を省略して定数に直接アクセスできるようになる
include SampleModule
puts CONST_NUM
puts const_num
module_function
を使うことでmodule
名に.をつけてメソッドを呼び出せるようになる
module SampleModule
def module_function_sum(a, b)
a + b
end
module_function :module_function_sum
end
SampleModule.module_function_sum(1, 100)
=> 101
ミックスイン
モジュールの機能をクラスに取り込むには
include モジュール名
とする
module SampleModule
def sum(a, b)
a + b
end
end
class Sample
include SampleModule
def class_sum(a, b)
sum(a, b)
end
end
実行してみる
sample = Sample.new
puts sample.sum(1, 100)
=> 101
puts sample.class_sum(1, 100)
=> 101
使い道
- 複数のクラスで使う共通のメソッドを
module
として定義し、適宜include
して使う - 特定のメソッドを
module
としてまとめておきユーティリティーとして使用する