前回までにローカル変数とインスタンス変数、クラス変数について書きました。
そして今回はグルーバル変数です。
##命名規則
- 先頭は$
- 英数字と_で構成されている
$student = 'Taro'
=> "Taro"
$_STUDENT_2 = 'Jiro'
=> "Jiro"
$3sutudent = 'Sabu' #$の隣に数字は定義できない
syntax error, unexpected tIDENTIFIER, expecting end-of-input
#また何も値を入れないとnilになる
$student_5
=> nil
##スコープ
どこからでも参照可能
$student = "Taro"
puts $student
Taro
=> nil
3.times do |n|
puts $student
end
Taro
Taro
Taro
=> 3
def students
$student
end
students #どこからでも参照可能
=> "Taro"
class Students
puts $student
end
Taro #どこからでも参照可能
=> nil
グローバル変数はどこから参照できるので下記のようにもできる。
class Students
$student = 'Taro'
def greet
puts "Hi,#{$student}"
end
def replace=(name)
$student = name
end
end
class MedicalStudents < Students
end
a = Students.new
a.greet
Hi,Taro
=> nil
a.replace = 'Jiro'
a.greet
Hi,Jiro
=> nil
b = MedicalStudents.new
b.greet
b.replace = 'Hanako'
b.greet
Hi,Hanako
=> nil
a.greet
Hi,Hanako
=> nil
#さらに$studentはというと
$student
=> "Hanako"
#特にwarningが出ることなく呼び出せる。
結論グローバル変数はどこでも呼び出せる