調べながらメモする
モジュールとは
Rubyの基本概念は、クラスがありオブジェクトがある
ある一連の振る舞いを一箇所にまとめたものがモジュール(Module)
しかし、クラスとは違いオブジェクトを生成することはできない
モジュールは、あくまで
一連の振る舞い(メソッドの集まり)、または処理をまとめたもの
それをクラスで読み込んで使用する
基本形は、ほぼクラスと同じ
メソッドだけでなく、定数やクラスを宣言することも可能
使いかた
使用したいクラスにて、取り込む(includeする)
そうすると、作成したオブジェクトからメソッドを読み込むことができる
色々なクラスにて同じ振る舞いのメソッドを
簡単に追加することができる
同じ名前をつけても衝突しない
それぞれの世界を名前空間といい
名前空間が異なれば、同じ名前でも良い
Mixin
クラスにモジュールを取り込むことをMixinと呼ぶ
多重継承もどき
Rubyは、Javaなどと同じように多重継承を許していない言語
つまり2つの親クラスを同時に継承できない
よって、
1つのクラスを継承してしまった後、
変更を加えるには子クラスに手を加えるしかない
ところが
Mix-inを使うと、あたかも親クラスのように振る舞うことができる
また1度モジュールを定義すれば、他のクラスでも使えるのでとても便利
まとめ
・クラス→オブジェクトを生成することができる
・モジュール→オブジェクトを生成することができない
・モジュールはいわばメソッドの集まりのようなもので
様々なクラスにて読み込むことで使用することができる
・複数のモジュールを読み込んで使用することも可能
・クラスにモジュールを取り込むことをMixinと呼ぶ
・Mixinすることで、多重継承のような動きに見せることができる
参考記事
現場Rails
https://style.potepan.com/articles/7667.html
動作確認の際に参考にしようと思う記事
https://qiita.com/tanaka-t/items/32a3329fbc1eb0840ea0
https://qiita.com/pink_bangbi/items/2c2f17516cd3a7b4eeac
https://medium.com/@jiraffestaff/ruby-mixin%E3%81%AE%E4%BD%BF%E3%81%84%E3%81%A9%E3%81%93%E3%82%8D-%E8%A8%AD%E8%A8%88%E7%9A%84%E3%81%AA%E8%80%83%E3%81%88%E6%96%B9-9b8d2e529669