142 次の場合: class Foo CONSTANT_NAME = ["a", "b", "c"] ... end にアクセスする方法はありますFoo::CONSTANT_NAMEか、または値にアクセスするためにクラスメソッドを作成する必要がありますか? ruby-on-rails ruby constants — ジェレミー・スミス ソース
244 あなたが投稿したものは完璧に機能するはずです: class Foo CONSTANT_NAME = ["a", "b", "c"] end Foo::CONSTANT_NAME # => ["a", "b", "c"] — ディラン・マルコウ ソース 2 うーん、以前テストしたときはタイプミスしたに違いない。おっと:) — ジェレミー・スミス 12 これが本当に一定であるためには、値の最後に.freezeを追加することを忘れないでください!CONSTANT_NAME = ["a", "b", "c"].freeze — mutexkid 6 常に混同し::てください.;) — Nick 大文字の場合、物事を見つけるのは難しい;) — マイケルイン
42 定数を含むクラス内で追加のコードを記述している場合、それをグローバルのように扱うことができます。 class Foo MY_CONSTANT = "hello" def bar MY_CONSTANT end end Foo.new.bar #=> hello クラス外の定数にアクセスしている場合は、クラス名の前に2つのコロンを付けてください。 Foo::MY_CONSTANT #=> hello — マジェック ソース
42 いくつかの選択肢: class Foo MY_CONSTANT = "hello" end Foo::MY_CONSTANT # => "hello" Foo.const_get :MY_CONSTANT # => "hello" x = Foo.new x.class::MY_CONSTANT # => "hello" x.class.const_defined? :MY_CONSTANT # => true x.class.const_get :MY_CONSTANT # => "hello" — エイダン ソース
17 アクセスする方法はありますFoo::CONSTANT_NAMEか? はいあります: Foo::CONSTANT_NAME — ヨルグWミッタッグ ソース アクセスしようとすると、以下の警告が表示されます。警告:すでに初期化された定数TestData :: CONSTANT_VARこの変数は他の場所では初期化されていません。なぜ私はこの警告を受けているのですか? — ASM