首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby中创建模块变量

在Ruby中创建模块变量
EN

Stack Overflow用户
提问于 2011-04-17 07:48:40
回答 4查看 98.4K关注 0票数 120

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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"
票数 169
EN

Stack Overflow用户

发布于 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类的一个实例。

票数 32
EN

Stack Overflow用户

发布于 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"
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5690458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档