6
我怎样才能让toStr[list]
获得符号列表并将它们返回为字符串?我想a=1;toStr[{a}]
给{"a"}
将符号转换为字符串而不进行评估
更新03/02:狮子座的食谱工作,也使一个版本,这需要的不是List我做SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]
我怎样才能让toStr[list]
获得符号列表并将它们返回为字符串?我想a=1;toStr[{a}]
给{"a"}
将符号转换为字符串而不进行评估
更新03/02:狮子座的食谱工作,也使一个版本,这需要的不是List我做SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]
序列可以使用HoldForm
:
a = 1; b = 2;[email protected][{a, b}]
这给出{a, b}
。为了使之成为toStr
功能,你需要设置的属性,使其不评估参数:
ClearAll[toStr]; SetAttributes[toStr, {HoldAll, Listable}];
toStr[x_] := [email protected][x];
a = 1; b = 2; toStr[{a, b}]
或者,你可以使用Unevaluated
;在上面的代码toStr[x_] := [email protected][x]
也可以。
这给出了“{a,b}”'而不是'{“a”,“b”}' – 2011-03-02 08:33:17
所以它确实如此。看起来你也可以通过设置'Listable'属性来改变它(回答编辑) – 2011-03-02 08:37:05
你也可以使用'SymbolName'来提取不合格的符号名称(和'Context'来获取上下文)。 – WReach 2011-03-02 15:17:42