2011-03-02 19 views
6

toStr[list]はシンボルのリストを取得して文字列として返すことができますか?私は与えることをa=1;toStr[{a}]を希望{"a"}シンボルを評価なしの文字列に変換する

更新03/02:レオのレシピはまた、あなたが使用できる代わりに、私はSetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]

答えて

7

をしたリストの順序を取るバージョンを作るために、働くHoldForm

a = 1; b = 2;[email protected][{a, b}] 

これは{a, b}です。

ClearAll[toStr]; SetAttributes[toStr, {HoldAll, Listable}]; 
toStr[x_] := [email protected][x]; 
a = 1; b = 2; toStr[{a, b}] 

また、あなたがUnevaluatedを使用することができ;:toStr関数にそれを作るために、あなたはそれが引数を評価しないように属性を設定する必要があります上記のコードtoStr[x_] := [email protected][x]の場合も同様です。

+0

これは '{" a "、" b "}の代わりに' '{a、b} ''を返します。 –

+0

そうです。 'Listable'属性を設定することでこれを変更することができます(回答編集) –

+1

' SymbolName'を使って非修飾シンボル名(コンテキストを取得する 'Context')を抽出することもできます。 – WReach

関連する問題