Programador experiente de lisp, esquema e clojure que está migrando para o elisp do python para automatizar tarefas básicas rotineiras, cotidianas e básicas: tive uma enorme surpresa do seguinte em 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
Hã? A chave e o valor parecem estar presentes:
ELISP> h2
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("a" 1))
/ bate na testa. Eu devo estar perdendo algo totalmente óbvio. Info diz:
-- 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.
ótimo. Vamos ver se podemos gethash
retornar algo diferente de nil
:
ELISP> (gethash "a" h2 'fubar)
fubar
Uau. Ok, eu sou muito mais idiota do que eu pensava. O que diabos estou fazendo de errado?
:test
parâmetro no seu exemplo ...