module上級
Ruby の `Module#prepend` と `Module#include` の主な違いはどれですか?
- prepend はモジュールをクラスより前のメソッド探索順に挿入する
- prepend はクラスメソッドとして追加する
- 両者に違いはない
- prepend は継承チェーンを変更しない
解説
`prepend` はモジュールをクラス自身よりも前のメソッド探索順(MRO)に挿入します。これによりモジュール内で `super` を呼ぶと元のクラスのメソッドが呼ばれます。メソッドのラッピング(around advice)に使われます。