142 当我有以下内容时: class Foo CONSTANT_NAME = ["a", "b", "c"] ... end 有没有一种方法可以访问,Foo::CONSTANT_NAME或者必须使类方法访问该值? ruby-on-rails ruby constants — 杰里米·史密斯 source
244 您发布的内容应该可以正常运行: class Foo CONSTANT_NAME = ["a", "b", "c"] end Foo::CONSTANT_NAME # => ["a", "b", "c"] — 迪伦·马科(Dylan Markow) source 2 嗯,我以前测试的时候一定打错了打字。糟糕:) — 杰里米·史密斯 12 为了使它真正成为一个常量,请不要忘记在值的末尾添加.freeze!CONSTANT_NAME = ["a", "b", "c"].freeze — Mutoxkid 2015年 6 总是把这::和.); — 尼克 大写时很难发现问题;) — 迈克尔·殷
42 如果要在包含常量的类中编写其他代码,则可以将其视为全局变量。 class Foo MY_CONSTANT = "hello" def bar MY_CONSTANT end end Foo.new.bar #=> hello 如果要在类外部访问常量,请在该类的前缀前面加上两个冒号 Foo::MY_CONSTANT #=> hello — 马切克 source
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" — 艾丹 source
17 有访问的方法Foo::CONSTANT_NAME吗? 就在这里: Foo::CONSTANT_NAME — 约格·米塔格 source 当我尝试访问它时,出现以下警告。警告:已经初始化的常量TestData :: CONSTANT_VAR此变量未在其他任何地方初始化。为什么我收到此警告? — ASM