変数、定数、クラス名、モジュール名、メソッド名等はすべて 識別子 で識別されます。識別子には、アンダーバー(_)を含む半角英数字を使用できます。ただし、識別子の先頭は数値であってはなりません。大文字・小文字は区別されます。
識別子 | 説明 |
---|---|
ClassName | クラス名。大文字で始まる。 |
ModuleName | モジュール名。大文字で始まる。 |
local_var | ローカル変数。小文字で始まる。 |
@instans_var | インスタンス変数。@小文字で始まる。 |
@@instans_var | クラス変数。@@小文字で始まる。 |
$global_var | グローバル変数。$小文字で始まる。 |
Const_var | 定数。$大文字で始まる。 |
LABEL | ラベル。先頭は大文字でも小文字でも可。ヒアドキュメントで使用。 |
小文字またはアンダーバー(_)で始まる変数は「ローカル変数」と呼ばれます。ブロック内、メソッド内などローカルなスコープで有効です。
def func() var = 123 end
アットマーク(@) で始まる変数は「インスタンス変数」と呼ばれます。そのオブジェクトが存在する間有効です。インスタンス変数は、自クラスやサブクラスから参照できます。
class MyClass def setName(str) @name = str end def getName() return @name end end obj1 = MyClass.new() obj2 = MyClass.new() obj1.setName("Tanaka") puts obj1.getName() # => Tanaka 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("Tanaka") puts obj1.getName() # => Tanaka puts obj2.getName() # => Tanaka
ドル記号($) で始まる変数は「グローバル変数」と呼ばれます。プログラムのどこからでも参照できます。
$name = "Tanaka" puts $name
大文字で始まる識別子は「定数」と呼ばれます。一度代入すると、再度値を変更することはできません。
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
下記の4つの擬似変数があります。擬似変数は値を変更することはできません。
擬似変数 | 説明 |
---|---|
true | 真を意味します。TrueClass クラスの唯一のインスタンスです。 |
false | 偽を意味します。FalseClass クラスの唯一のインスタンスです。 |
nil | 未定義値を意味します。NilClass クラスの唯一のインスタンスです。 |
self | 処理中の自分自身のインスタンスを示します。 |