将符号转换为字符串而不进行求值
如何使 toStr[list]
接受符号列表并将它们作为字符串返回?我想要 a=1;toStr[{a}]
给出 {"a"}
更新 03/02:Leo 的食谱有效,为了制作一个采用序列而不是列表的版本,我做了 SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]
How can I make toStr[list]
that takes a list of symbols and returns them as strings? I'd like a=1;toStr[{a}]
to give {"a"}
Update 03/02: Leo's recipe works, also to make a version which takes a sequence instead of list I did SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
HoldForm
:这给出
{a, b}
。要使其成为toStr
函数,您需要设置属性,以便它不计算参数:或者,您可以使用
Unevaluated
;在上面的代码中toStr[x_] := ToString@Unevaluated[x]
也可以工作。You can use
HoldForm
:This gives
{a, b}
. To make it intotoStr
function, you need to set the attributes so that it doesn't evaluate the arguments:Alternatively, you could use
Unevaluated
; in the above codetoStr[x_] := ToString@Unevaluated[x]
would work just as well.