全域性變數
全域性變數具有全域性範圍,因此可以在任何地方使用。它們的範圍不取決於它們的定義位置。當使用 $
符號作為字首時,變數將被視為全域性變數。
$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
儘管全域性變數易於使用,但強烈建議不要使用常量。