3

次のような短所セルのリストがあるとします。

(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))

そして、特定のconsセルの値を「キー名」で取得したいと思います。これを可能にする機能はありますか?

例えば

(get-by-key "a" foo) ;; => 1

または同様のもの。前もって感謝します!

4

3 に答える 3

12

このようなリストは連想リスト、または省略してalistと呼ばれます。正式には、連想リストは、キーとそれに関連付けられた値のコンスのリストです。

機能はassocあなたが探しているものです。キーと連想リストを引数として取り、連想リスト内のキーの最初の関連付けを次のように返しますequal

ELISP> (setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
(("a" . 1)
 ("b" . 2)
 ("c" . 3))

ELISP> (assoc "a" foo)
("a" . 1)

ELISP> (cdr (assoc "a" foo))
1

このassoc-string関数は関数に似ていassocますが、キーが文字列である連想リストに固有です。キーと連想リストに加えて、キーの比較で大文字と小文字を区別しない別のオプションの引数を取ることができます。

ELISP> (assoc-string "a" foo)
("a" . 1)

ELISP> (assoc-string "A" foo)
nil

ELISP> (assoc-string "A" foo t)
("a" . 1)

連想リスト関連の関数の完全なリストについては、GNU Emacs Lisp Reference Manualを参照してください。

于 2012-10-05T22:41:09.983 に答える