全局变量
全局变量具有全局范围,因此可以在任何地方使用。它们的范围不取决于它们的定义位置。当使用 $
符号作为前缀时,变量将被视为全局变量。
$i_am_global = "omg"
class Dinosaur
def instance_method
p "global vars can be used everywhere. See? #{$i_am_global}, #{$another_global_var}"
end
def self.class_method
$another_global_var = "srsly?"
p "global vars can be used everywhere. See? #{$i_am_global}"
end
end
Dinosaur.class_method
# "global vars can be used everywhere. See? omg"
# => "global vars can be used everywhere. See? omg"
dinosaur = Dinosaur.new
dinosaur.instance_method
# "global vars can be used everywhere. See? omg, srsly?"
# => "global vars can be used everywhere. See? omg, srsly?"
由于全局变量可以在任何地方定义并且在任何地方都可见,因此调用未定义全局变量将返回 nil 而不是引发错误。
p $undefined_var
# nil
# => nil
尽管全局变量易于使用,但强烈建议不要使用常量。