モジュール発展レベル

Ruby の Module#prependModule#include の主な違いはどれですか?

  • 1prepend はモジュールをクラスより前のメソッド探索順に挿入する
  • 2prepend はクラスメソッドとして追加する
  • 3両者に違いはない
  • 4prepend は継承チェーンを変更しない

解説

prepend はモジュールをクラス自身よりも前のメソッド探索順(MRO)に挿入します。これによりモジュール内で super を呼ぶと元のクラスのメソッドが呼ばれます。メソッドのラッピング(around advice)に使われます。

問題一覧へ戻る