ハッシュの全エントリに対して処理を実行する - lisp-cookbook-ja/common-lisp GitHub Wiki
ハッシュの全エントリに対して処理を実行する
専用の構文maphashがあります。他loop等でも処理が可能です。 また、このような処理の構文を自作したい場合には、with-hash-table-iteratorを利用します。
(let ((ht (make-hash-table :test #'equal))
(default 100))
(setf (gethash "apple" ht) 150
(gethash "banana" ht) 300
(gethash "lemon" ht) 300)
(maphash (lambda (key val)
(format t "key => ~A, val => ~A~%" key val))
ht))
;-> key => apple, val => 150
key => banana, val => 300
key => lemon, val => 300
;=> nil
;; ht は上の例のハッシュテーブルと同じもの。
(loop for key being the hash-keys in ht
using (hash-value val)
do (format t "key => ~A, val => ~A~%" key val))