Когда у меня есть следующее:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
...
end
Есть ли способ получить доступ Foo::CONSTANT_NAME
или мне нужно создать метод класса для доступа к значению?
ruby-on-rails
ruby
constants
Джереми Смит
источник
источник
CONSTANT_NAME = ["a", "b", "c"].freeze
::
.
Если вы пишете в своем классе дополнительный код, содержащий константу, вы можете рассматривать его как глобальный.
class Foo MY_CONSTANT = "hello" def bar MY_CONSTANT end end Foo.new.bar #=> hello
Если вы обращаетесь к константе вне класса, добавьте к ней префикс имени класса, за которым следует два двоеточия.
Foo::MY_CONSTANT #=> hello
источник
Некоторые альтернативы:
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"
источник
Да, есть:
источник