Programmeur expérimenté, lisp, schema, clojure passant à elisp de python pour automatiser les tâches de base de routine, quotidiennes: j'ai eu une énorme surprise de ce qui suit dans ielm
ELISP> (setq h2 (make-hash-table))
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ())
ELISP> (puthash "a" 1 h2)
1 (#o1, #x1, ?\C-a)
ELISP> (gethash "a" h2)
nil
hein? La clé et la valeur semblent être présentes:
ELISP> h2
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("a" 1))
/ gifle le front. Je dois manquer quelque chose de totalement évident. L'info dit:
-- Function: gethash key table &optional default
This function looks up KEY in TABLE, and returns its associated
VALUE—or DEFAULT, if KEY has no association in TABLE.
génial. Voyons voir si nous pouvons obtenir gethash
de retourner autre chose que nil
:
ELISP> (gethash "a" h2 'fubar)
fubar
sensationnel. Ok, je suis beaucoup plus bête que je ne le pensais. Qu'est-ce que je fais de mal?
:test
paramètre dans votre exemple ...