プログラム中でハッシュを定義する


Tags: ハッシュ, ライブラリ, fare-utils, alexandria, arnesi

プログラム中でハッシュを定義する

以下のようにするとプログラム中でハッシュを定義することができます。 検索用のテスト関数も:testで指定することが可能です。(デフォルトでは、eql)

(let ((ht (make-hash-table :test #'equal)))
  (setf (gethash "apple" ht) 150
        (gethash "banana" ht) 300
        (gethash "lemon" ht) 300))

見ての通りやや面倒なので、便利にするライブラリも様々提供されています。

;; alexandria
(alexandria:plist-hash-table '("apple" 150
                               "banana" 300
                               "lemon" 300)
                             :test #'equal)

;; fare-utils
(fare-utils:alist->hash-table '(("apple" 150)
                                ("banana" 300)
                                ("lemon" 300))
                              :test #'equal)

;; arnesi
(arnesi:build-hash-table (list :test #'equal)
                         '(("apple" 150)
                           ("banana" 300)
                           ("lemon" 300)))