5

我在 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得到回声时。只foo-hash在 ielm 回声中输入:#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("location" "house"))

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

Emacs 版本:24.0.95.1

4

1 回答 1

11

elisp 中的哈希表eql默认用于比较。eql除非它们是同一个对象,否则字符串不会等于。您可能想要使用equal比较字符串的内容。用这个创建你的哈希表:

(make-hash-table :test 'equal)
于 2012-04-04T15:43:45.417 回答