访问类的常量

问题描述 投票:127回答:4

当我有以下内容时:

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

  ...
end

有没有办法访问Foo::CONSTANT_NAME或我是否必须使用类方法来访问该值?

ruby-on-rails ruby constants
4个回答
225
投票

你发布的内容应该是完美的:

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

Foo::CONSTANT_NAME
# => ["a", "b", "c"]

40
投票

如果您在类中编写包含常量的其他代码,则可以将其视为全局代码。

class Foo
  MY_CONSTANT = "hello"

  def bar
    MY_CONSTANT
  end
end

Foo.new.bar #=> hello

如果您在类外部访问常量,请在其前面加上类名,后跟两个冒号

Foo::MY_CONSTANT  #=> hello

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"

17
投票

有没有办法访问Foo::CONSTANT_NAME

就在这里:

Foo::CONSTANT_NAME
© www.soinside.com 2019 - 2024. All rights reserved.