はじめに
グローバル変数は、その名の通りグローバルな範囲を持ち、プログラムのどこからでもアクセス可能です。
グローバル変数は、常にドル記号($)が先頭に付きます。
もし、クラスを超えて利用可能な一つの変数を持ちたい場合は、グローバル変数を定義する必要があります。
初期化されていないグローバル変数はデフォルトでnil値を持ち、それを使用するとプログラムが不可解で複雑なものになる可能性があります。
また、グローバル変数は、プログラム中の任意の場所で変更することができます。
#例
$number = 5
参考例
・グローバル変数を二つのクラスで使用した場合
$number = 3
class Class1
def print_global
puts "Class1におけるグローバル変数に入っているのは#$number"
end
end
class Class2
def print_global
puts "Class2におけるグローバル変数に入っているのは#$number"
end
end
obj1 = Class1.new
obj1.print_global
obj2 = Class2.new
obj2.print_global
#出力結果
Class1におけるグローバル変数に入っているのは3
Class2におけるグローバル変数に入っているのは3
・クラス内に二つのグローバル変数を定義した場合
$global_one = "ほらね?"
class Message
def instance_method
puts "グローバル変数はどこでも使えます。 #{$global_one}, #{$global_two}"
end
def self.class_method
$global_two = "使えるでしょ?"
puts "グローバル変数はどこでも使えます。 #{$global_one}"
end
end
Message.class_method
Message = Message.new
Message.instance_method
#出力結果
グローバル変数はどこでも使えます。 ほらね?
グローバル変数はどこでも使えます。 ほらね?, 使えるでしょ?