Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby変数のスコープ - Silver/Gold試験対策

定数は大文字で始まる。 定数だけに変更は原則できない(代入はできるが警告が出る)。

GreatCar = "TOYOTA"
p ::GreatCar #=> "TOYOTA"
p Object::GreatCar

class Germany
 GreatCar = "VolksWagen"
end
p ::Germany::GreatCar #=> "VolksWagen"
p Germany::GreatCar #=> "VolksWagen"

定数はグローバル(::Germany::GreatCar でいうと、 左端の::)から参照しやすい。

しかし、スコープをかけ、参照、代入できる範囲を限りたい場合はローカル変数を使う

::GreatCar = "TOYOTA"

ではなく

great_car = "TOYOTA"

こうやるのが正しい。しかし

class Germany
 great_car = "VolksWagen"
 def self.output
  great_car
 end
end
p Germany.output #=> undefined method
p Germany::great_car #=> "VolksWagen" #=> undefined method
def output
  great_car = "ToYoTa"
  great_car.upcase
end
p great_car #=> undefined method or variable
p output #=> "TOYOTA"