我知道如何将符号转换为字符串:(symbol-name 'hello)
或(string 'hello)
返回"Hello"
。如果符号被引用两次会怎样?例如:''hello
。(string ''hello)
导致错误。在SBCL中,错误消息是:'HELLO is not a string designator.
。如何将''hello
转换为"HELLO"
?
只需在REPL中检查数据的样子。*
是一个绑定到最后一次求值结果的变量。
CL-USER 1 > 'hello
HELLO
CL-USER 2 > (string *)
"HELLO"
CL-USER 3 > ''hello
(QUOTE HELLO)
CL-USER 4 > (string (second *))
"HELLO"
由于''hello
相当于(quote (quote hello))
,您可以:
CL-USER> (string (cadr ''hello))
"HELLO"
您也可以使用eval
来计算外部quote
:
CL-USER> (string (eval ''hello))
"HELLO"