【Ruby3.x】Module::class_variable_defined?()メソッドの使い方
class_variable_defined?メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
class_variable_defined?メソッドは、指定された名前のクラス変数が、レシーバであるモジュールまたはクラス、あるいはその継承チェーン上の上位クラスで定義されているかどうかを判定するメソッドです。クラス変数は@@で始まる変数で、クラスとそのサブクラス間で共有されるデータを保持します。このメソッドは、引数として確認したいクラス変数の名前を文字列またはシンボルで受け取ります。そして、そのクラス変数が既に定義されていればtrueを、まだ定義されていない場合はfalseを戻り値として返します。
このメソッドは、クラス変数を安全に操作するための重要なツールです。例えば、クラス変数の値を参照する前に、それが本当に存在するかどうかを確認することで、未定義変数へのアクセスによるNameErrorなどのエラーを防ぎ、プログラムの堅牢性を高めることができます。注意点として、このメソッドはクラス変数が存在しているかのみを判断し、その値がnilであるかどうかは考慮しません。つまり、@@my_var = nilのように明示的にnilが代入されていても、定義済みとしてtrueを返します。これにより、変数が定義されている状態と、全く定義されていない状態とを明確に区別することが可能です。
構文(syntax)
1class MyClass 2 @@my_variable = "Hello" 3end 4 5MyClass.class_variable_defined?(:@@my_variable) # => true 6MyClass.class_variable_defined?("@@another_variable") # => false
引数(parameters)
symbol
- symbol: クラス変数名を表すシンボル
戻り値(return)
Boolean
指定されたクラス変数名に対応するクラス変数が定義されている場合は true を、定義されていない場合は false を返します。