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)するだけです。ielm エコーでnil入力すると、次のようになります。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

4

1 に答える 1

11

elispのハッシュテーブルはeqlデフォルトで比較に使用されます。eql同じオブジェクトでない限り、文字列はと等しくなりません。equal文字列の内容を比較する、を使用することをお勧めします。これを使用してハッシュテーブルを作成します。

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