【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 の特殊変数を参照してください。

Ruby2入門

Posted by 管理人