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