[ruby] Ruby에서 모듈 변수 만들기

Ruby의 모듈에서 클래스 변수와 유사하게 작동하는 변수를 만드는 방법이 있습니까? 이것이 의미하는 바는 모듈의 인스턴스를 초기화하지 않고도 액세스 할 수 있지만 변경할 수 있다는 것입니다 (모듈의 상수와 달리).



답변

Ruby는 기본적으로 모듈에서 클래스 변수를 지원하므로 일부 프록시 또는 의사 클래스 변수가 아닌 클래스 변수를 직접 사용할 수 있습니다.

module Site
  @@name = "StackOverflow"

  def self.setName(value)
    @@name = value
  end

  def self.name
    @@name
  end
end

Site.name            # => "StackOverflow"
Site.setName("Test")
Site.name            # => "Test"


답변

인스턴스 내에서 호출 할 필요가없는 경우 모듈 본문 내에서 인스턴스 변수를 사용하면됩니다.

module SomeModule
  module_function
  def param; @param end
  def param= v; @param = v end
end

SomeModule.param
# => nil
SomeModule.param = 1
SomeModule.param
# => 1

@param그런 다음 인스턴스 변수 는 클래스 SomeModule의 인스턴스 인 module에 속합니다 Module.


답변

모듈에서 클래스 인스턴스 변수를 설정할 수 있습니다.

module MyModule
   class << self; attr_accessor :var; end
end

MyModule.var = 'this is saved at @var'

MyModule.var
=> "this is saved at @var"


답변

모듈 정의 내에서 값을 초기화 할 수도 있습니다.

module MyModule
  class << self
    attr_accessor :my_variable
  end
  self.my_variable = 2 + 2
end

p MyModule.my_variable


답변