Erfahrener Lisp-, Schema- und Clojure-Programmierer, der von Python zu Elisp wechselt, um routinemäßige, alltägliche Grundaufgaben zu automatisieren: Ich habe eine enorme Überraschung von den folgenden in bekommen 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
huh? Der Schlüssel und der Wert scheinen vorhanden zu sein:
ELISP> h2
#s(hash-table size 65 test eql rehash-size 1.5 rehash-threshold 0.8 data ("a" 1))
Ich klatsche auf die Stirn. Mir muss etwas völlig Offensichtliches fehlen. Info sagt:
-- 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.
groß. Mal sehen, ob wir gethash
etwas anderes zurückgeben können als nil
:
ELISP> (gethash "a" h2 'fubar)
fubar
Beeindruckend. Ok, ich bin viel dümmer als ich dachte. Was um alles in der Welt mache ich falsch?
:test
in Ihrem Beispiel kein Symbol als Parameter ...