rubyのextendについて

こんにちは!kossyです!


昨日は終日外出していたため、連続更新記録が途絶えてしまいました、、、
残念ですが、気持ちを切り替えて粛々と更新を続けます。



さて、今回はRubyのextendについてブログに残したいと思います。









モジュールとは


そもそも、モジュールとはなんでしょうか。
Rubyにおけるモジュールとは、


・継承を使わずにクラスにインスタンスメソッドを追加、上書きする
・複数のクラスに対して共通の特異メソッド(クラスメソッド)を追加する
・クラス名や定数名の衝突を防ぐために名前空間を作る
・関数的メソッドを定義する
・シングルトンオブジェクトのように扱って設定値などを保持する
出典: プロを目指す人のためのRuby入門 p.283 著者:伊藤淳一

以上のような用途で使用するものですが、ざっくりと理解するならば、
「メソッドをひとまとめにしておくもの」と言えばいいでしょうか。


定義の仕方は、

module モジュール名(先頭大文字)
  処理
end

これで定義できます。

モジュールにはいくつか特徴があり、
・モジュールからインスタンスの作成不可
・他のモジュール・クラスの継承不可
という特徴があります。


どこで役に立つのか

Rubyでは単一継承を採用しており、1つのクラスは1つのスーパークラスしか持てません。
しかし、複数のクラスにまたがって同じような機能が必要になることはあります。
この重複した機能をモジュールとしてまとめておくことで、擬似的な多重継承を実現できます。