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"