Ruby入門 - 変数・定数

トップ > Ruby入門 > 変数・定数

識別子

変数、定数、クラス名、モジュール名、メソッド名等はすべて 識別子 で識別されます。識別子には、アンダーバー(_)を含む半角英数字を使用できます。ただし、識別子の先頭は数値であってはなりません。大文字・小文字は区別されます。

識別子説明
ClassNameクラス名。大文字で始まる。
ModuleNameモジュール名。大文字で始まる。
local_varローカル変数。小文字で始まる。
@instans_varインスタンス変数。@小文字で始まる。
@@instans_varクラス変数。@@小文字で始まる。
$global_varグローバル変数。$小文字で始まる。
Const_var定数。$大文字で始まる。
LABELラベル。先頭は大文字でも小文字でも可。ヒアドキュメントで使用。

ローカル変数(var)

小文字またはアンダーバー(_)で始まる変数は「ローカル変数」と呼ばれます。ブロック内、メソッド内などローカルなスコープで有効です。

Ruby
def func()
  var = 123
end

インスタンス変数(@var)

アットマーク(@) で始まる変数は「インスタンス変数」と呼ばれます。そのオブジェクトが存在する間有効です。インスタンス変数は、自クラスやサブクラスから参照できます。

Ruby
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

クラス変数(@@var)

2つのアットマーク(@@) で始まる変数は「クラス変数」と呼ばれます。同じクラスのすべてのインスタンスで共有されます。クラス変数は、自クラスやサブクラスから参照できます。

Ruby
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

グローバル変数($var)

ドル記号($) で始まる変数は「グローバル変数」と呼ばれます。プログラムのどこからでも参照できます。

Ruby
$name = "Tanaka"
puts $name

定数(CONST)

大文字で始まる識別子は「定数」と呼ばれます。一度代入すると、再度値を変更することはできません。

Ruby
PI = 3.14

puts PI                 # => 3.14

クラス内で定義された定数は、クラス名::定数名 で参照されます。

Ruby
class MyClass
  PI = 3.14
end

puts MyClass::PI        # => 3.14

クラス外で定義された定数は、暗黙的に Object クラスの定数となります。Object::定数名は、::定数名 とすることもできます。

Ruby
PI = 3.14
puts Object::PI         # => 3.14
puts ::PI               # => 3.14

擬似変数(true, false, nil, self)

下記の4つの擬似変数があります。擬似変数は値を変更することはできません。

擬似変数説明
true真を意味します。TrueClass クラスの唯一のインスタンスです。
false偽を意味します。FalseClass クラスの唯一のインスタンスです。
nil未定義値を意味します。NilClass クラスの唯一のインスタンスです。
self処理中の自分自身のインスタンスを示します。

Copyright(C) 2014 杜甫々
初版:2014年12月30日、最終更新:2014年12月30日
http://www.tohoho-web.com/ruby/variables.html