【Rails】モジュール
Rubyには、まとまりをもった設計図を一箇所にまとめた存在として、
「モジュール(Module)」という概念があります。
モジュールの特徴
moduleは、
classと同じようにmodule内に関数の定義をすることが出来ますが、
moduleには
・インスタンスが生成できない
・継承出来ない
といった特徴があります。
モジュール名の制約
モジュール名は必ず大文字から始めます。
このように書くと、
#=> SyntaxError: class/module name must be CONSTANT
というエラーが発生してしまいます。
module hello→ module Hello としましょう。
モジュールを使う目的
・名前空間の提供
・インスタンスメソッドとして取り込む(Mix-in)
・モジュールをオブジェクトに取り込む(extend)
・モジュール関数
名前空間の提供
名前空間とは、クラスとモジュールに名前をつけていれるための入れ物やタグのことをいいます。この名前空間を使うことで名前のかぶりを回避することが出来ます。
呼び出しは、::演算子を使い、
「モジュール名::モジュール名」または「モジュール名::クラス名」として呼び出します。
インスタンスメソッドとして取り組む(Mix-in)
Rubyのクラスは単一継承(クラスを1つしか継承できないという設計)のみですが、
モジュールをクラスに取り組むことで多重継承を可能にしています。
Mix−inにすることで、
クラスの肥大化を防いだり、クラスをまたがった同じ処理の繰り返しを防ぐことができます。
参考
Rubyのmoduleの使い方とメリットを理解して脱初心者!|TECH PLAY Magazine [テックプレイマガジン]