#目的
Mathematica で変数名そのものを文字列として利用したいときがある。例えばグラフをファイルに出力するときに、グラフが入っている変数の変数名をそのままファイル名にしたいときなど。
#方法
HoldForm
関数やReleaseHold
関数を使う。ここで、HoldForm
関数は与えられた引数を未評価のまま出力する関数、ReleaseHold
関数はHold
関数の出力を評価する関数である。
#例
グラフのプロットを変数に納めて、その変数名のファイルにグラフを出力してみよう。
plt = Plot[ x, {x, -1, 1} ];
Export[ ToString[ #1 ] <> ".png", ReleaseHold[ #1 ] ] & [ HoldForm[ plt ] ];
Export
関数の第1引数は変数名plt
に拡張子として.png
をつけた文字列になっていて、第2引数は未評価のまま渡されたHoldForm[ plt ]
を評価したもの、つまりグラフそのものとなっている。注意点は、純関数の引数にplt
を与えてExport
関数の第1引数をToString[ HoldForm[ #1 ] ]
として__しまわないことだ__。こうしてしまうとうまくいかないのだが、理由はplt
が評価された後にHoldForm
関数に渡されることだと考えられる。