Rubyで変数の種類とそれぞれの有効範囲(スコープ)について

Rubyで使える変数の種類を知りたい。
また、変数の有効範囲(スコープ)を知りたい。
本記事ではこのような悩みを解決。
スコープの概要と変数の種類について解説します。
スコープとは
スコープとは、変数の有効範囲を示します。
有効範囲を超えてしまうとその変数は使えません。
変数の種類によって使える有効範囲が決まってます。
ローカル変数
def message()
# ローカル変数
text = "こんにちは"
puts text
end
#ここでは使えない
#puts text
message()
ローカル変数のコード例です。
ローカル変数は定義されたメソッドやブロック内で使用される変数です。
ローカル変数の使い方は以下の通りです。
任意の変数名 = 値
任意の変数名を決め、イコール(=)で変数に格納するデータを代入します。
スコープの範囲として、特定のメソッド・ブロック内でローカル変数を定義した場合、その変数は同じメソッド・ブロック内でしか使う事が出来ません。
インスタンス変数
class Introduction
def initialize(name)
#インスタンス変数
@name = name
end
def message()
puts "こんにちは#{@name}です。"
end
end
#インスタンス化
Introduction.new("kasumiblog").message()
Introduction.new("kasumi").message()
#出力結果
#こんにちはkasumiblogです。
#こんにちはkasumiです。
インスタンス変数を使ったコード例です。
インスタンス変数は同じクラスのインスタンス間で共有できる変数になります。
使い方は以下の通りです。
@変数名= 値
変数名の先頭に@を付けます。
initializeメソッド(初期化)と併用して、インスタンス事に固有の異なる値を変数に設定できます。
クラス変数
class Defalt
# クラス変数
@@num = 2
def self.num()
@@num
end
end
class Sum < Defalt
def self.sum()
@@num + @@num
end
end
puts "#{Defalt.num()}"
puts "#{Defalt.num()}+#{Defalt.num()}は#{Sum.sum()}"
#出力結果
#2
#2+2は4
クラス変数は、クラス内で作成されたすべてのオブジェクトで共有できる変数になります。
使い方は以下の通りです。
@@変数名= 値
変数名の先頭に@を二つ付けます。
インスタンス変数との違いとして、変数の値はクラスで共有されるすべてのオブジェクトで同じです。
グローバル変数
$name = "kasumi"
def message()
puts "こんにちは、#{$name}です"
end
message()
グローバル変数はクラスやメソッド内外関わらず、どこでも使用できる変数になります。
使い方は以下の通りです。
$変数名 = 値
変数名の先頭に$を付けます。
Rubyで使う変数の中で、スコープとして最も広い範囲で使われる変数です。
まとめ
Rubyでスコープの概要と変数の種類について紹介しました。
以上で解説を終わります。