【Ruby3.x】Module::prepend()メソッドの使い方
prependメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
prependメソッドは、モジュールをメソッド探索パスの先頭に追加することで、そのモジュール内のメソッドをクラスや他のモジュールよりも優先的に実行するメソッドです。Rubyにおいて、モジュールをクラスに取り込む方法としてincludeもありますが、includeがモジュールをクラスのメソッド探索パスの下に配置するのに対し、prependはクラスのメソッド探索パスの上に配置します。これにより、クラス自身に定義されているメソッドと同じ名前のメソッドがモジュールにも定義されている場合、prependされたモジュール側のメソッドが先に呼び出されます。
この特性は、既存のクラスのメソッドの振る舞いを変更・拡張したい場合に特に有用です。prependされたモジュール内でsuperキーワードを使用することで、オーバーライドされた元のクラスのメソッドを呼び出すことができ、元の機能を活かしつつ新たな処理を追加するといった、柔軟なカスタマイズが可能になります。例えば、特定の処理の前後に追加のログ出力を行いたい場合や、既存のメソッドに事前条件チェックや事後処理を追加したい場合に活用されます。このメソッドは、RubyのModuleクラスのインスタンスメソッドとして提供されています。
構文(syntax)
1module PrependedModule 2 def common_method 3 "Prepended module method" 4 end 5end 6 7class TargetClass 8 prepend PrependedModule 9 10 def common_method 11 "Class method" 12 end 13end
引数(parameters)
*rest
- *rest: prependしたいモジュールを任意個指定します。
戻り値(return)
self
Module#prepend メソッドは、ミックスインしたいモジュールをレシーバとなるクラスの先頭に挿入します。このメソッドは、レシーバとなったクラス自身を返します。