我正在尝试创建一个“字典”类型--即使用字符串作为关键字的哈希表。这在Lisp中是可能的还是明智的?
我注意到这是按照预期工作的:
> (setq table (make-hash-table))
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA46>
> (setf (gethash 1 table) "one")
"one"
> (gethash 1 table)
"one"
但是,以下内容并不适用:
> (setq table (make-hash-table))
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA0E>
> table
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA0E>
> (setf (gethash "one" table) 1)
1
> (gethash "one" table)
NIL
NIL
发布于 2009-09-11 05:16:09
如果eql使用'eql‘,则需要创建使用'eql’的哈希表。eql不会将两个具有相同内容的字符串计算为't‘,而’eql‘则使用’eql‘。
下面是你如何做到这一点:
(make-hash-table :test 'equal)
正如skypher指出的,如果你想要不区分大小写的字符串散列,你也可以使用'equalp。
https://stackoverflow.com/questions/1409069
复制相似问题