win*_*TTr 1 emacs elisp common-lisp
(message "%s" 'abc)
(message "%s" "abc")
Run Code Online (Sandbox Code Playgroud)
我发现前两个表达式都是相同的结果(在emacs中).虽然我知道这不是一个显示我的问题的属性示例.
你能解释一下引用符号的确切含义吗?引用的符号会返回什么?变量名称或其他内容的字符串表示形式?
最简单的答案是:符号在系统中是唯一的,而字符串则不是.以下测试将明确指出:
? (eq 'abc 'abc)
T
? (eq "abc" "abc")
NIL
Run Code Online (Sandbox Code Playgroud)
符号被拘禁在系统中唯一的一次.所有进一步的参考都指向同一个对象.换句话说,符号是单例,比较两个符号只是比较指针的问题.所以它更快.字符串不是这种情况.在上面的示例中,字符串的两个实例"abc"
是两个对象.