答案 0 :(得分:3)
全局变量是全局变量,这意味着即使您将它们放在一个非常具体范围的类中,它们仍然可以在任何地方使用。它们也是明确的变量(意味着如果它们的值发生变化,不应该感到惊讶)。
例如:
module TopLevel
module MiddleLevel
module LowLevel
class SpecificSomething
$my_global = "duff man says a lot of things"
end
end
end
end
module TopLevel
def self.global
p $my_global
end
end
TopLevel.global
#=> "duff man says a lot of things"
可以在定义它们的地方访问常量 - 也就是说,它们不是全局的。它们也是常量(正如你提供的链接指出的那样),所以人们不会期望它们会改变(尽管ruby允许它们被改变)。