#初めに
アウトプットのため投稿させてもらいます
#スコープとは
スコープは変数の有効範囲のことです
範囲の外からはその変数を利用できないです
そのスコープに対応するためにRubyには様々な変数が用意されています。
#グローバル変数
スコープはプロジェクトの全ての範囲です
$global = "global"
def japan()
p $global
end
japan()
#実行結果
"global"
変数は同じ名前のものが重複すると、予期せず値が書き換えられてしまう場合があるのできをおつけましょう
#インスタンス変数
スコープはインスタンス内ならどこでも参照できます
class Car
def initialize(name)
@name = name
end
def put_name
puts @name
end
end
car1 = Car.new("トヨタ")
car2 = Car.new("三菱")
car1.put_name
car2.put_name
#実行結果
トヨタ
三菱
実行するとインスタンス毎に違った値が出力されます
#クラス変数
スコープはクラス内です
class Car
def initialize(name)
@@name = name
end
def put_name
puts @@name
end
end
car1 = Car.new("トヨタ")
car2 = Car.new("三菱")
car1.put_name
car2.put_name
#実行結果
三菱
三菱
インスタンス変数と違いCarの名前が三菱で上書きされていることがわかります。
#終わりに
グローバル変数、インスタンス変数、クラス変数のスコープのアウトプットでした