【Ruby3.x】Module::undef_method()メソッドの使い方
undef_methodメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
undef_methodメソッドは、指定された名前のインスタンスメソッドを、現在のモジュールまたはクラスから未定義状態にするメソッドです。このメソッドは、引数として未定義にしたいメソッド名をシンボルまたは文字列で受け取ります。
undef_methodが呼び出されると、そのモジュールやクラスに直接定義されていた同名のメソッドは、呼び出し不可能になります。これにより、そのモジュールやクラスのインスタンスで該当メソッドを呼び出そうとすると、メソッドが未定義であるというエラーが発生するか、または親クラスやインクルードされたモジュールに同名のメソッドが存在する場合、そちらのメソッドが呼び出されるようになります。
これは、undef_methodが現在のモジュールやクラスにおけるメソッドの定義を「隠す」効果を持つためです。完全にメソッドを削除するremove_methodとは異なり、祖先(親クラスやインクルードモジュール)に定義された同名のメソッドを有効に戻すことができます。
この機能は、特定のクラスで親クラスのメソッドの動作を一時的に無効にしたい場合や、意図的に特定のメソッドの呼び出しを制御したい場合などに役立ちます。例えば、特定の機能が子クラスでは利用できないように制限したい場合に活用されます。
構文(syntax)
1class MyClass 2 def some_method 3 # ... 4 end 5 6 undef_method :some_method 7end
引数(parameters)
symbol, *symbols
- symbol: undefine(定義解除)したいメソッドの名前を指定するシンボル
- *symbols: undefine(定義解除)したいメソッドの名前を複数指定するシンボル(省略可能)
戻り値(return)
Module
undef_method は、自身が定義されたモジュールのインスタンスである Module を返します。