当我有以下内容时:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
...
end
有没有办法使用Foo::CONSTANT_NAME
进行访问,还是必须使用类方法来访问该值?
答案 0 :(得分:223)
您发布的内容应该完美无缺:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
end
Foo::CONSTANT_NAME
# => ["a", "b", "c"]
答案 1 :(得分:40)
如果您在类中编写包含常量的其他代码,则可以将其视为全局代码。
class Foo
MY_CONSTANT = "hello"
def bar
MY_CONSTANT
end
end
Foo.new.bar #=> hello
如果您正在访问类外的常量,请在其前面加上类名,后跟两个冒号
Foo::MY_CONSTANT #=> hello
答案 2 :(得分:35)
一些替代方案:
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"
答案 3 :(得分:17)
有没有办法访问
Foo::CONSTANT_NAME
?
是的,有:
Foo::CONSTANT_NAME