使用哈希表迭代器迭代哈希表的条目
可以使用宏 with-hash-table-iterator 迭代 哈希表的键和值。这可能比 maphash 或 loop 更复杂,但它可以用于实现这些方法中使用的迭代构造。 with-hash-table-iterator 接受一个名称和一个哈希表,并在一个体内绑定名称,以便对该名称的连续调用产生多个值:(i)一个布尔值,指示是否存在值; (ii)参赛作品的关键; (iii)参赛作品的价值。
(let ((ht (make-hash-table)))
(setf (gethash 'a ht) 1
(gethash 'b ht) 2)
(with-hash-table-iterator (iterator ht)
(print (multiple-value-list (iterator)))
(print (multiple-value-list (iterator)))
(print (multiple-value-list (iterator)))))
;; (T A 1)
;; (T B 2)
;; (NIL)