[ruby-on-rails] 클래스 상수에 액세스

다음이있을 때 :

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


답변