LoginSignup
0
0

More than 3 years have passed since last update.

Rubyの変数の定義(グローバル変数)

Posted at

前回までにローカル変数インスタンス変数クラス変数について書きました。
そして今回はグルーバル変数です。

命名規則

  • 先頭は$
  • 英数字と_で構成されている
$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が出ることなく呼び出せる。

結論グローバル変数はどこでも呼び出せる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0