使用雜湊表迭代器迭代雜湊表的條目
可以使用巨集 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)