19
我试图创建一个“字典”类型 - 即使用字符串作为键的散列表。在Lisp中这是可能的还是明智的?在Common 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
Justicle,CLHS只是以此为例。如果不明显,查看文档可能会有所帮助:http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_has.htm – 2009-09-11 06:25:24
如果您希望区分大小写的字符串散列,请使用EQUALP。 – skypher 2009-09-11 16:50:25
谢谢大家。我检查过这些文档,但我没有真正关注这个特定部分的许多平等功能,以便跟我一起慢跑。我在(不正确)的假设下“应该只是做我需要的”。 – Justicle 2009-09-13 01:15:47