指定されたコンテキストでのローカル変数の一覧を取得する関数
指定されたコンテキストでのローカル変数の一覧(名前と値のハッシュ)を取得する関数を書きました。戦略は以下です。
- 「eval( "local_variables", binding )」でbindingでのローカル変数名一覧を取得。
- Kernel#local_variablesは現在のスコープで定義されているローカル変数名の配列を取得する組み込み関数です。
- 名前を元に、「eval( <名前>, binding )」で値を取得して返す。
#bindingのコンテキストでのローカル変数の一覧(名前と値)を取得する。 def get_local_variables( binding ) eval( "local_variables", binding ).inject({}){|h,n| h[n] = eval( n, binding ) h } end
サンプル。
def foo a = "a" b = 10 c = Object.new return get_local_variables( binding ) end foo.each_pair {|k,v| puts "#{k} : #{v}" }
実行結果です。
a : a b : 10 c : #<Object:0x100303bc>