使用雜湊表迭代器迭代雜湊表的條目

可以使用巨集 with-hash-table-iterator 迭代 雜湊表的鍵和值。這可能比 maphashloop 更復雜,但它可以用於實現這些方法中使用的迭代構造。 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)