君の瞳はまるでルビー - Ruby 関連まとめサイト

ローカル変数の一覧の表示

最終更新: 2015-03-31 (火) 21:53:18 (1688d)

イディオム

書き方

以下のコードでローカル変数のハッシュ(名前と値の対)として出力できます。

variables = binding.eval("local_variables").inject({}) { |h, vname| h[vname] = binding.eval(vname.to_s); h }
STDERR.puts variables

解説

binding は組み込み関数 Kernel.#binding のことです。

binding.eval は、文字列をプログラムとして解釈し、実行した結果を返します。

binding.eval の第1引数に指定している local_variables は Kernel.#local_variables のことです。ローカル変数の名前の一覧を取得します。

以下のコードは、ローカル変数の「変数名」を全て取得するためのものです。

binding.eval("local_variables")

これだけでは名前の取得だけしかできません。デバッグ時には値も見たいでしょう。

値を取得するために再度 binding.eval を使います。以下のコードで変数名から値を取得できます*1

v = binding.eval("変数名")

# 事例では local_variables で取得した変数名を使っている
v = binding.eval(vname.to_s)

Array の inject メソッドを使い、ローカル変数名の配列の各要素に以上のコードを適用し、ハッシュに変換しています。

参考

コメント

本ページの内容に関して何かコメントがある方は、以下に記入してください。

コメントはありません。 コメント/idiom/output_local_variables

お名前: