変数
公式サイト:
使い方
ローカル変数
- 小文字 (またはアンダースコア) で始まる識別子は、ローカル変数またはメソッド呼び出しとなる。
- ローカルスコープ (クラス、モジュール、メソッド定義の本体) において、小文字で始まる識別子への最初の代入は、そのスコープでのローカル変数の宣言となる。
- 宣言されていない識別子の参照は、引数の無いメソッド呼び出しとみなされる。
インスタンス変数
- アットマーク
@
で始まる変数は、インスタンス変数として扱われる。 - インスタンス変数は、クラスまたはそのサブクラス内で参照できる。
- 初期化されていない場合の初期値は
nil
となる。
クラス変数
- アットマーク2つ
@@
で始まる変数は、クラス変数として扱われる。 - クラス、または、そのサブクラス内で参照できる。
- クラス、あるいは、そのサブクラスで共通の値を持つ。
- モジュールで定義されたクラス変数 (モジュール変数) は、モジュールをインクルードしたクラスでも共有される。
- 親クラスで定義されているクラス変数を再定義することはできない。
グローバル変数
- ドル記号 $ で始まる変数は、グローバル変数として扱われる。
- 実行中のプログラムの全てのスコープで共有される。
- 初期化されていない場合の初期値は
nil
となる。
参考:
疑似変数
self
:メソッドが属するオブジェクトnil
:NilClass
の唯一のインスタンスtrue
:TrueClass
の唯一のインスタンスfalse
:FalseClass
の唯一のインスタンス__FILE__
:現在のソースファイル名__LINE__
:現在のソースファイルにおける行番号__ENCODING__
:現在のソースファイルのスクリプトエンコーディング
参考:
local_variables
参考:
Kernel.#local_variables | Ruby リファレンスマニュアル [公式]
ローカル変数に変数名でアクセスする
binding
とシンボルを使って変数を取得する。
binding.local_variable_get(:var_name)
参考:
Binding#local_variable_get | Ruby リファレンスマニュアル [公式]
Get value from string representing local variable – Stack Overflow