我无法让我的哈希表可靠地返回值,我想知道是否有人可以提供建议?
这就是我正在做的事情:
- 制作表格:
(setq table (make-hash-table))
- 定义一个变量来命名表中的元素,初始名称是“bob”,但在我的程序中,它将保存用户生成的值,该值会不时更改:
(defvar name-of-element "bob")
- 向表中添加一行,以
name-of-element
的内容命名。 :
(setf (gethash name-of-element table) "bob's element")
- 当我使用键
name-of-element
从表中检索元素时:
(gethash name-of-element table)
我得到:
"bob's element"
T
- 但是当我尝试使用
"bob"
检索时:
(gethash "bob" table)
我得到否定/没有结果:
N
N
想法?
最佳答案
make-hash-table
的 :test
选项的默认值为 eql
。当您创建一个新字符串 "bob"
时,它与 name-of-element
的值不相等,例如
(eql "bob" name-of-element) => NIL
使用 :test 'equal
获取认为相似字符串相等的哈希表。
(defvar *table* (make-hash-table :test 'equal))
关于lisp - 如何从 Common Lisp 中的哈希表返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73888030/