1
說我有利弊小區的名單,像這樣:如何通過鍵名檢索cons單元格的值?
(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
而且我想用「鍵值名」,以獲取特定的利弊單元格的值。有沒有一個函數可以讓我這麼做?
E.g.
(get-by-key "a" foo) ;; => 1
或類似的東西。提前致謝!
說我有利弊小區的名單,像這樣:如何通過鍵名檢索cons單元格的值?
(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
而且我想用「鍵值名」,以獲取特定的利弊單元格的值。有沒有一個函數可以讓我這麼做?
E.g.
(get-by-key "a" foo) ;; => 1
或類似的東西。提前致謝!
這樣的列表被稱爲關聯列表或alist縮寫。形式上,關聯列表是關鍵字及其關聯值的列表。
assoc
功能就是你要找的。它需要一個密鑰和ALIST作爲參數,並返回在ALIST的條款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
功能,但具體到聯想列出的鍵是字符串。除了密鑰和ALIST,它可以採取另一種可選參數,使鍵比較不區分大小寫:
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。