常量变量和全局变量之间的差异

时间:2015-01-26 11:23:52

标签: ruby

常量变量和全局变量之间有什么区别?

CONSTANT = 100
$global = 100

我读了question,但我无法理解。

1 个答案:

答案 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允许它们被改变)。