Cisp, skema, clojure programmer berpengalaman membuat pindah ke elisp dari python untuk mengotomatisasi rutin, setiap hari, tugas-tugas dasar: Saya mendapat kejutan besar dari yang berikut di 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
Hah? Kunci dan nilai tampaknya ada:
ELISP> h2
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("a" 1))
/ Menampar dahi. Saya pasti kehilangan sesuatu yang sangat jelas. Info mengatakan:
-- 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.
Bagus. Mari kita lihat apakah kita bisa gethashmengembalikan apa pun selain nil:
ELISP> (gethash "a" h2 'fubar)
fubar
Wow. Ok, saya jauh lebih bodoh dari yang saya kira. Apa yang saya lakukan salah?
:testparameter dalam contoh Anda ...