定数
アルファベット大文字 ( [A-Z]
) で始まる識別子は定数として扱われる。定数の定義 (と初期化) は代入によって行われる。メソッドの中では定数は定義できない。
一度定義された定数に再び代入を行おうとすると警告が出力される。定義されていない定数にアクセスすると NameError
例外が発生する。
定数はその定義されたクラス/モジュール内 (メソッドやネストしたクラス/モジュールを含む) から参照できる。
トップレベル (クラス定義の外) で定義された定数は Object
に所属する。
あるクラスまたはモジュールで定義された定数を外部から参照するには ::
演算子を用いる。また、トップレベルの定数 (Object
クラスで定義されている定数) を確実に参照するためには左辺無しの ::
演算子を用いる。
参考:
Ruby の定数、もうひとつの意外な仕様 | アインシュタインの電話番号
Everything You Need to Know About Ruby Constants | RubyGuides
const_defined?
定数が定義されているか確認する
mod.const_defined?(name)
参考:
Ruby で名前空間が定義されているか確認する方法 – Qiita
instance method Module#const_defined? (Ruby 2.6.0)
const_defined? (Module) | Ruby リファレンス (ref.xaio.jp)
Check if a constant is already defined – Stack Overflow
How to check if a constant is defined by its symbol in Ruby? – Stack Overflow
const_get
文字列やシンボルから定数を取得する
mod.const_get(name)
参考:
const_get (Module) – Rubyリファレンス
instance method Module#const_get (Ruby 2.6.0)
クラス名の文字列からクラスを取得する方法 | present
ruby で動的にクラス名を使いたいときは Object.const_get つかうらしい | hiroyukim
Ruby の Module#const_get について調べてみた | freedom-man
const_defined? / const_get の罠 | CLARA ONLINE techblog
Ruby で文字列をクラス名として扱うには? – QA@IT
const_set
参考:
instance method Module#const_set (Ruby 2.6.0)
remove_const
指定した定数を取り除く。定数に設定されていた値を返す。
mod.remove_const(name)
参考:
instance method Module#remove_const (Ruby 2.6.0)
Ruby で定義したクラスを忘れさせる | IwazerReport
class のアンロードとか再定義の仕方を知らなかったのでメモ | zorio の日記
constants
mod.constants
クラスあるいはモジュールで定義されている定数の一覧を配列にして返す。親クラスやインクルードしたモジュールの定数も含まれる。
参考:
constants (Module) – Rubyリファレンス
singleton method Module.constants (Ruby 2.6.0)
const_missing
参考:
instance method Module#const_missing (Ruby 2.6.0)
子クラスの定数を参照する
参考:
Ruby の子クラスで定数を再定義したのに親の定数が参照されちゃう | TakiTake の日記
定数の定義場所を調べる
参考:
Ruby で class や const の定義位置を調べる方法 – Qiita
How do I find where a constant is defined in Ruby? – Stack Overflow
定数の定義・読み込みと探索
参考:
Ruby loading and requiring files, constant name resolution | NopeCode
Ruby constant lookup: The good, the bad and the ugly | makandra dev