Ответ 1
То, что вы опубликовали, должно работать отлично:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
end
Foo::CONSTANT_NAME
# => ["a", "b", "c"]
Когда у меня есть следующее:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
...
end
Есть ли способ получить доступ с помощью Foo::CONSTANT_NAME
или мне нужно создать метод класса для доступа к значению?
То, что вы опубликовали, должно работать отлично:
class Foo
CONSTANT_NAME = ["a", "b", "c"]
end
Foo::CONSTANT_NAME
# => ["a", "b", "c"]
Если вы пишете дополнительный код внутри своего класса, который содержит константу, вы можете рассматривать его как глобальный.
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"
Есть ли способ доступа к
Foo::CONSTANT_NAME
?
Да, есть:
Foo::CONSTANT_NAME