module中級

Ruby の `Module#include` と `Module#extend` の違いはどれですか?

  • include はインスタンスメソッド、extend はクラスメソッドとして追加する
  • include はクラスメソッド、extend はインスタンスメソッドとして追加する
  • 両者に機能上の差はない
  • extend は継承チェーンに追加しない

解説

`include` はモジュールのメソッドをインスタンスメソッドとして混入します。`extend` はモジュールのメソッドをクラスメソッド(または特定オブジェクトのシングルトンメソッド)として追加します。