Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Kernelモジュール > trace_var
trace_var(varname, hook) -> nil
[permalink][rdoc]trace_var(varname) {|new_val| .... } -> nil
trace_var(varname, hook) -> [String|Proc]
グローバル変数 varname への代入のフックを登録します。
ここでの「グローバル変数」は、特殊変数 (変数と定数/組み込み変数 を参照)も含めた `$' で始まる変数のこ とです。
この呼び出し以降、varname で指定したグローバル変数に 値が代入されるたびに hook かブロックが評価されます。hook が Proc オブジェクトの場合 代入された値がブロック引数に渡されます。文字列の場合はRubyコードとして評価されます。
trace_var がフックするのは明示的な代入だけです。 フックは複数登録できます。
フックを解除するには、hook に nil を 指定するか、Kernel.#untrace_var を用います。
hook が nil ならば、設定されていた hook をすべて解除してその配列を返します(ブロックで登録されていれば Proc オブジェクトで返されます) それ以外は、nil を返します。
trace_var(:$v){|val| puts "hook: $v=#{val.inspect}" } $v = 1 #=> hook: $v=1 $v = "foo" #=> hook: $v="foo" $v.upcase! p $v #=> "FOO"
[SEE_ALSO] Kernel.#untrace_var