Emacs:gethash看不到散列表中的键

时间:2012-04-04 15:30:50

标签: emacs elisp hashtable

我在ielm中评估了以下elisp代码:

(setq foo-hash (make-hash-table))

(puthash "location" "house" foo-hash)

(defun foo-start ()
  (interactive)
  (message (gethash "location" foo-hash)))

但是,当我运行(foo-start)(gethash "location" foo-hash)时,我只会回复nil。在ielm中仅输入foo-hash#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("location" "house"))

这是一个错误还是我做错了什么?

Emacs版本:24.0.95.1

1 个答案:

答案 0 :(得分:11)

elisp中的哈希表默认使用eql进行比较。字符串不会与eql相等,除非它们是同一个对象。您可能希望使用equal,它会比较字符串的内容。使用以下命令创建哈希表:

(make-hash-table :test 'equal)