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