怎么在Ruby中创建模块变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

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

提问于
用户回答回答于

Ruby本机支持模块中的类变量,因此可以直接使用类变量,而不是某些代理或伪类变量:

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'
用户回答回答于

如果不需要从实例中调用它,则可以简单地在模块主体中使用实例变量。

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上课。

扫码关注云+社区