Wolfram mathematica 无需求值即可将符号转换为字符串

Wolfram mathematica 无需求值即可将符号转换为字符串,wolfram-mathematica,Wolfram Mathematica,如何使toStr[list]接受符号列表并将其作为字符串返回?我想a=1;toStr[{a}]给予{a} 02年3月更新:Leo的配方很有效,它也可以制作一个版本,采用序列而不是我做的列表SetAttribute[toStr2,HoldAll];toStr2[a_uu]:=toStr[{a}]您可以使用HoldForm: a = 1; b = 2;ToString@HoldForm[{a, b}] 这就给出了{a,b}。要使其成为toStr函数,需要设置属性,使其不会计算参数: ClearAl

如何使
toStr[list]
接受符号列表并将其作为字符串返回?我想
a=1;toStr[{a}]
给予
{a}


02年3月更新:Leo的配方很有效,它也可以制作一个版本,采用序列而不是我做的列表
SetAttribute[toStr2,HoldAll];toStr2[a_uu]:=toStr[{a}]

您可以使用
HoldForm

a = 1; b = 2;ToString@HoldForm[{a, b}]
这就给出了
{a,b}
。要使其成为
toStr
函数,需要设置属性,使其不会计算参数:

ClearAll[toStr]; SetAttributes[toStr, {HoldAll, Listable}];
toStr[x_] := ToString@HoldForm[x];
a = 1; b = 2; toStr[{a, b}]

或者,您可以使用
未评估的
;在上述代码中
toStr[x]:=ToString@Unevaluated[x] 
也同样有效。

这就给出了
“{a,b}”
而不是
{a,b}
。看起来您也可以通过设置
Listable
属性(答案已编辑)来更改此设置。您还可以使用
SymbolName
来提取不合格的符号名(以及
上下文
来获取上下文)。