gethash
key hash-table &optional default ⇒ value, present-p
(setf ( gethash
key hash-table &optional default) new-value)
key | an object. |
hash-table | a hash table. |
default | an object. The default is nil. |
value | an object. |
present-p | a generalized boolean. |
Value is the object in hash-table whose key is the same as key under the hash-table’s equivalence test. If there is no such entry, value is the default.
Present-p is true if an entry is found; otherwise, it is false.
setf may be used with gethash to modify the value associated with a given key, or to add a new entry.
When a gethash form is used as a setf place, any default which is supplied is evaluated according to normal left-to-right evaluation rules, but its value is ignored.
(setq table (make-hash-table)) ⇒ #<HASH-TABLE EQL 0/120 32206334>
(gethash 1 table) ⇒ NIL, false
(gethash 1 table 2) ⇒ 2, false
(setf (gethash 1 table) "one") ⇒ "one"
(setf (gethash 2 table "two") "two") ⇒ "two"
(gethash 1 table) ⇒ "one", true
(gethash 2 table) ⇒ "two", true
(gethash nil table) ⇒ NIL, false
(setf (gethash nil table) nil) ⇒ NIL
(gethash nil table) ⇒ NIL, true
(defvar *counters* (make-hash-table)) ⇒ *COUNTERS*
(gethash 'foo *counters*) ⇒ NIL, false
(gethash 'foo *counters* 0) ⇒ 0, false
(defmacro how-many (obj) `(values (gethash ,obj *counters* 0))) ⇒ HOW-MANY
(defun count-it (obj) (incf (how-many obj))) ⇒ COUNT-IT
(dolist (x '(bar foo foo bar bar baz)) (count-it x))
(how-many 'foo) ⇒ 2
(how-many 'bar) ⇒ 3
(how-many 'quux) ⇒ 0
The secondary value, present-p, can be used to distinguish the absence of an entry from the presence of an entry that has a value of default.