在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