我想生成可以在多个哈希表中使用的顺序键。我会称它们为"id1"、"id2"等。如果 ht 是我的哈希表,那么我想用字符串制作符号作为键。要向哈希表添加一个条目,我想这样做:
(setf (gethash (make-symbol "id1") ht) 1)
然后再次访问它
(gethash 'id1 ht)
我不认为make-symbol给了我想要的东西,而且键"id1"无法识别。
制作此密钥的最佳方法是什么?
错误:符号应该在包中并且需要正确的大小写
在您的情况下,我们有:
CL-USER 24 > (symbol-name (make-symbol "id0"))
"id0"
CL-USER 25 > (symbol-package (make-symbol "id0"))
NIL
请务必考虑以下事项:
- 实习包中的符号
- 在正确的包装中实习符号
- 确保符号具有正确的名称和正确的大小写
- 使用您打算使用的大小写符号,可能需要转义符号以保留大小写
例子:
大写符号和小写符号名称 -> 不是 eq
CL-USER 26 > (eq 'id0 (intern "id0" "CL-USER"))
NIL
大写符号和大写符号名称 -> 是 eq
CL-USER 27 > (eq 'id0 (intern "ID0" "CL-USER"))
T
转义和小写符号和小写符号名称 -> 是 eq
CL-USER 28 > (eq '|id0| (intern "id0" "CL-USER"))
T
make-symbol
创建未绑定的符号。这意味着您每次都会有一个独特的符号。要获取暂留符号,请改用intern
。