Rubyの定数
定数
大文字で始まる参照は、クラス名やモジュール名も含めて全て定数です。
定数はディレクトリの階層のような木構造で並んでいるので、MyModule::MyClass::MyConstantのようにパスを使って指定します。
外部の定数を指定するには、コロン2つ「::」で書き始めます。
これはまさしくディレクトリの構造と近く、ルートディレクトリの指定に「/」を使うのと同じです。
さらに、Moduleクラスはconstants()という名前のインスタンスメソッドとクラスメソッドを提供しています。これは「ls」コマンドのようなものです。
module PracticeModule class PracticeClass1 CONSTANCE1 = "定数1" end class PracticeClass2 CONSTANCE1 = ::PracticeModule::PracticeClass1::CONSTANCE1 CONSTANCE2 = "定数2" end end #irb > PracticeModule::PracticeClass1::CONSTANCE1 => “定数1" > PracticeModule::PracticeClass2::CONSTANCE1 => “定数1" > PracticeModule::PracticeClass2::CONSTANCE2 => “定数2"
また、モジュール名もクラス名も定数としての区別がないのでモジュール名とクラス名で衝突することがあります。
参考
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/10
- メディア: 大型本
- この商品を含むブログ (1件) を見る