有没有办法在Ruby的模块中创建一个行为类似于类变量的变量?我的意思是,它可以在不初始化模块实例的情况下访问,但它可以更改(与模块中的常量不同)。
发布于 2011-04-17 07:52:26
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"
发布于 2011-04-17 11:02:34
如果不需要在实例中调用它,只需在模块体中使用实例变量即可。
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
类的一个实例。
发布于 2012-01-09 13:07:35
您可以在模块中设置类实例变量。
module MyModule
class << self; attr_accessor :var; end
end
MyModule.var = 'this is saved at @var'
MyModule.var
=> "this is saved at @var"
https://stackoverflow.com/questions/5690458
复制相似问题