読者です 読者をやめる 読者になる 読者になる

Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

Rubyのrequireとincludeの違いメモ

モジュールを使う時のrequireとincludeの違いがよくわからなかったので調べてみたまとめ
  • requireはファイルの読み込みを行う命令。includeは、モジュール内のメソッドを継承チェーンに入れ込む、Moduleオブジェクトのメソッド。
  • 外部モジュール内のメソッドを使うためには、requireしてかつincludeする必要がある。(includeしない場合は、Module::メソッドと名前空間から呼び出しが必要。)
  • 組み込みモジュールは、あらかじめrequireされているから、includeだけで良い。

 

  • クラス定義の中でincludeしたモジュールは、モジュール内でdef self.hogeと定義されたメソッドはクラスメソッドとして、def fugaと定義されたメソッドはインスタンスメソッドとして使うことになる。
  • トップレベルでincludeしたモジュールは、上記の効果が全てのクラスで得られる様になる。ただし、メソッドチェーンの位置はObjectクラスの上位でKernelクラスの下位。