Ruby (および Rails) での検出: 現在のスコープで local/global_variables をリストし、irb セッションで (_) をリストします.


Ruby は、実行時にプログラムを利用して、定義されたローカル変数とグローバル変数のリストを決定するメカニズムを提供します. Ruby には、ローカルまたはグローバル スコープで宣言されたすべての変数を取得するための 2 つのメソッドが用意されています.

カーネル#local_variables


local_variables は、Ruby プログラムで世界中で利用できます.

x = 5
puts local_variables
# => [:x]

local_variables メソッドは、現在のローカル スコープの変数を取得します.だから、次のようなもののために

y = 6
def do_something
  x = 5
  puts local_variables
end

do_something
local_variables


コンソールに出力される最初の行は、 do_something 内のローカル変数になります. 2 番目の出力は、現在のスコープ内のローカル変数、つまり y になります.

カーネル#global_variables



Ruby では、グローバル変数はドル記号 $ で始まる変数です. Ruby には組み込みグローバルのセットが既に用意されています.

puts global_variables


独自のグローバル変数を作成することで、グローバル変数のリストに追加できますが、そうしたくない場合があります.

$my_global_variable = "Custom global"
global_variables.find { |glob| glob == :$my_global_variable }
 # => :$my_global_variable 


注意: すべての変数はシンボルとして保存されます.

ボーナス コンテンツ、irb セッションの _ ローカル変数。



irb セッションを起動して local_variables をログに記録すると、リストに _ が表示されます. _ は、永久に失われた場合に備えて、最後の戻り値にアクセスする方法を提供します.

irb セッションで _ を使用して、前の行の戻り値にアクセスできます.

x = 5
y = _

puts x 
puts y


これを irb で実行すると、5 が 2 回ログに記録されます.これは、_ が変数 x への 5 の割り当てである最後の戻り値を格納するためです.

資力


  • Kernel#local_variables
  • Kernel#global_variables