【Ruby】変数・定数の使い方
ローカル変数
「ローカル変数」とは、小文字またはアンダーバー(_)で始まる変数の事を言います。
ブロック内、メソッド内などで有効です。
def func()
aaa = 123
puts aaa
end
func
インスタンス変数
「インスタンス変数」とは、アットマーク(@) で始まる変数の事を言います。
そのオブジェクトが存在しているあいだは有効です。
インスタンス変数は、自クラスやサブクラスから参照できます。
class MyClass
def setName(str)
@name = str
end
def getName()
return @name
end
end
obj1 = MyClass.new()
obj2 = MyClass.new()
obj1.setName("Hoge")
puts obj1.getName() # Hoge
puts obj2.getName() # nil:何も設定してないので
クラス変数
「クラス変数」とは、2つのアットマーク(@@) で始まる変数の事を言います。
同じクラスのすべてのインスタンスで共有されます。
クラス変数は、自クラスやサブクラスから参照できます。
class MyClass
def setName(str)
@@name = str
end
def getName()
return @@name
end
end
obj1 = MyClass.new()
obj2 = MyClass.new()
obj1.setName("Hoge")
puts obj1.getName() # Hoge
puts obj2.getName() # Hoge:クラス変数に代入しているので表示される。
グローバル変数
「グローバル変数」とは、ドル記号($) で始まる変数の事を言います。
プログラムのどこからでも参照できます。
$name = "Hoge"
def func()
puts $name
end
func
定数
「定数」を定義するには、変数を大文字で始めます。
一度代入すると、再度値を変更することはできません。
PI = 3.14
puts PI # => 3.14
クラス内で定義された定数を参照するには、「クラス名::定数名」で参照できます。
class MyClass
PI = 3.14
end
puts MyClass::PI # => 3.14
クラス外で定義された定数は、暗黙的に Object クラスの定数となります。
参照するには、「Object::定数名」もしくは「::定数名」で参照することができます。
PI = 3.14
puts Object::PI # => 3.14
puts ::PI # => 3.14
擬似変数
通常の変数以外に疑似変数と呼ばれる変数があります。
疑似変数の値を変更することはできません。
true:
真を意味します。TrueClass クラスの唯一のインスタンスです。
false:
偽を意味します。FalseClass クラスの唯一のインスタンスです。
nil:
未定義値を意味します。NilClass クラスの唯一のインスタンスです。
self:
処理中の自分自身のインスタンスを示します。
__FILE__:
現在のソースファイル名
※フルパスが必要な場合は File.expand_path(__FILE__) とする必要があります。
__LINE__:
現在のソースファイル中の行番号
__ENCODING__:
現在のソースファイルのスクリプトエンコーディング
puts __FILE__ # D:/project/ruby/workspace/test/new_file.rb
puts __LINE__ # 2
puts __ENCODING__ # UTF-8
組み込み変数
Ruby 処理系によって特殊な意味を与えられている変数があります。
これらを組み込み変数と言います。
詳細は Kernel の特殊変数を参照してください。