【Ruby3.x】Module::const_defined?()メソッドの使い方
const_defined?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
const_defined?メソッドは、レシーバであるModuleオブジェクト(クラスまたはモジュール)に、指定された名前の定数が定義されているかどうかを確認するメソッドです。
このメソッドは、引数として確認したい定数の名前を文字列またはシンボルで受け取ります。そして、もしその定数が定義されていればtrueを、定義されていなければfalseを返します。これにより、プログラムの実行中に特定の定数が存在するかどうかを動的にチェックし、その結果に基づいて処理を分岐させることが可能になります。
定数の検索は、まずレシーバ自身(呼び出し元のクラスやモジュール)で行われ、その後、継承チェーンを辿って親クラスや、エンクロージングモジュール(そのクラスやモジュールが定義されている外部のモジュール)も検索対象となります。オプションの第二引数inheritにfalseを指定することで、継承チェーンやエンクロージングモジュールを検索せず、レシーバ自身のみで定数が定義されているかを確認することもできます。
例えば、特定の機能が利用可能かどうかを、その機能に関連する定数が定義されているかどうかで判断する場面などで役立ちます。これにより、安全かつ柔軟なプログラミングを支援します。
構文(syntax)
1module ExampleModule 2 MY_CONSTANT = 100 3end 4 5ExampleModule.const_defined?(:MY_CONSTANT)
引数(parameters)
name, inherit = true
- name: 定数名。シンボルまたは文字列で指定します。
- inherit = true: trueの場合、親クラスを遡って定数定義を検索します。falseの場合、現在のクラス(またはモジュール)のみを検索します。
戻り値(return)
Boolean
指定された定数がモジュール内に定義されているかどうかを真偽値(trueまたはfalse)で返します。