1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

モジュールとMixin メモ

Posted at

調べながらメモする

モジュールとは

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?