全域性變數

全域性變數具有全域性範圍,因此可以在任何地方使用。它們的範圍不取決於它們的定義位置。當使用 $ 符號作為字首時,變數將被視為全域性變數。

$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

儘管全域性變數易於使用,但強烈建議不要使用常量。