Ruby中的静态全局C类变量

时间:2015-06-08 20:20:56

标签: ruby global-variables

Ruby有静态全局变量吗?

我的意思是全局变量只能从定义它们的文件中访问。

1 个答案:

答案 0 :(得分:2)

简短回答:

答案很长很复杂。

Ruby中只有一个全局命名空间,任何代码对它的任何更改都会对所有代码进行更改。为了保持本地化,您需要将它们限定在特定的上下文中,通常是moduleclass。例如:

module PrivateStuff
  @private_variable = "Private (mostly)"

  def self.expose_private_variable
    @private_variable
  end
end

请注意,这并不妨碍他人使用instance_variable_get或类似技术访问您的私人变量。

这通常不是什么大不了的事,因为全局变量通常是设计不良的标志,应该避免,除非别无选择,这种情况非常罕见。

与在数据访问方面强制执行非常严格的规则的编译语言不同,Ruby会让程序员遵守纪律,并且首先执行此操作。