访问类的常量

时间:2011-06-21 15:08:12

标签: ruby-on-rails ruby constants

当我有以下内容时:

class Foo
   CONSTANT_NAME = ["a", "b", "c"]

  ...
end

有没有办法使用Foo::CONSTANT_NAME进行访问,还是必须使用类方法来访问该值?

4 个答案:

答案 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