Ruby基礎学習(10) Mix-in

date:
toc: [...]
  1. 参考
  2. require
  3. load
  4. include
  5. extend

Mix-inの話と、それに似たもろもろ。他に詳しい記事があるので、これを読んでおけばいいような気はした。

##参考

##require

  • Kernelモジュールのモジュール関数。
  • 引数に与えたRubyライブラリを1回ロード、というか実行する。
  • 使う場面としてはgemだとか自作のライブラリ(クラス)を読み込むときに指定する。
  • 指定した引数は$LOAD_PATHに探しに行き、カレントディレクトリは含まれないため、パスの指定には少し注意が必要。
  • 同じファイルを複数回requireしようとしても、1回しか読み込まない。

##load

  • Kernelモジュールのモジュール関数。
  • requireと同様に外部ライブラリを実行するが、同じファイルを何度でも読み込める。
  • requireは拡張子の自動補完を行うが、loadは行わない。

##include

  • Moduleクラスのインスタンスメソッド。
  • Moduleを引数に取り、メソッドや定数といった対象Moduleの性質を取り込む。
  • ArrayやHashがEnumerableの性質を持っているのはincludeしていることによるもの。
  • 継承とは異なるが、メソッドの探索対象としてはスーパークラスよりincludeされたModuleの方が先になる。
  • 同じモジュールを複数回読み込もうとしても、2回目以降は無視される。
  • Rubyは多重継承を認めていないが、その代わりの機能を果たすという位置付けらしい。

##extend

  • Objectクラスのインスタンスメソッド。
  • 引数に取ったModuleのメソッドを特異メソッドとして取り込める。