在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 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
    

要回复问题请先登录注册