在Ruby中创build模块variables

有没有办法在Ruby中的模块中创build一个类似于类variables的variables? 我的意思是,它可以在不初始化模块实例的情况下被访问,但是它可以被改变(不同于模块中的常量)。

Ruby原生支持模块中的类variables,所以你可以直接使用类variables,而不是一些代理或伪类variables:

module T @@foo = 'bar' def self.set(x) @@foo = x end def self.get @@foo end end p T.get #=> 'bar' T.set('fubar') p T::get #=> 'fubar' 

如果你不需要在一个实例中调用它,你可以简单地在模块体内使用一个实例variables。

 module SomeModule module_function def param; @param end def param= v; @param = v end end SomeModule.param # => nil SomeModule.param = 1 SomeModule.param # => 1 

实例variables@param将属于模块SomeModule ,它是Module类的一个实例。

你可以在模块中设置一个类实例variables。

 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