モジュール
クラスようにメソッドや定数をまとめられるもの。
クラスとの違い
・インスタンスを作ることができない。
・クラスの継承ができない。
モジュールの定義
module モジュール名
#モジュールの定義(メソッドや定数など)
end
モジュールの用途
関連するメソッドや定数などをまとめてグループ化したいだけの時に手軽に使えて便利。
module Driver
def self.run #←インスタンス化できないのでselfをつける。
puts 'Run'
end
def self.stop
puts 'Stop'
end
end
Driver.run
Driver.stop
これを実行すると、
Run Stop
が出力される。
調べたら、モジュールでは多重継承ができるらしい。(Mix-inなら複数のモジュールをインクルードできる)
これがメリットなのか!?
例
module M1
def foo
'method foo'
end
end
module M2
def bar
'method bar'
end
end
class C
include M1
include M2
end
puts C.new.foo
puts C.new.bar
#=> method foo
#=> method bar
クラスではできないことだから使う時が来るのだろうが、どんな時に使うんだろう。多重継承をした方が効率が良さそうってのはなんとなくイメージはできるけど、、、。
頭の隅に入れておこう。