無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

指定されたコンテキストでのローカル変数の一覧を取得する関数

指定されたコンテキストでのローカル変数の一覧(名前と値のハッシュ)を取得する関数を書きました。戦略は以下です。

  • 「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>