将符号转换为字符串而不进

Yar*_*tov 6 wolfram-mathematica

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

更新03/02:Leo的配方有效,也是为了制作一个版本,它采用序列而不是列表SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]

Leo*_*yev 7

你可以使用HoldForm:

a = 1; b = 2;ToString@HoldForm[{a, b}]
Run Code Online (Sandbox Code Playgroud)

这给了{a, b}.要使其成为toStr函数,您需要设置属性,以便它不评估参数:

ClearAll[toStr]; SetAttributes[toStr, {HoldAll, Listable}];
toStr[x_] := ToString@HoldForm[x];
a = 1; b = 2; toStr[{a, b}]
Run Code Online (Sandbox Code Playgroud)

或者,你可以使用Unevaluated; 在上面的代码中toStr[x_] := ToString@Unevaluated[x]也可以正常工作.