Emacs 如何按键名检索cons单元格的值?
假设我有一个cons单元格列表,如下所示:Emacs 如何按键名检索cons单元格的值?,emacs,elisp,Emacs,Elisp,假设我有一个cons单元格列表,如下所示: (setq foo '(("a" . 1) ("b" . 2) ("c" . 3))) 我想通过“key name”检索特定cons单元格的值。有没有一个函数可以让我这样做 例如 或者类似的东西。提前谢谢 这样的列表称为关联列表,简称alist。在形式上,关联列表是一个键及其关联值的conse列表 assoc功能就是您需要的。它将一个键和一个列表作为其参数,并返回列表中键的第一个关联,如下所示: ELISP>(setqfoo'(“a.1”(“b.2”
(setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
我想通过“key name”检索特定cons单元格的值。有没有一个函数可以让我这样做
例如
或者类似的东西。提前谢谢 这样的列表称为关联列表,简称alist。在形式上,关联列表是一个键及其关联值的conse列表
assoc
功能就是您需要的。它将一个键和一个列表作为其参数,并返回列表中键的第一个关联,如下所示:
ELISP>(setqfoo'(“a.1”(“b.2”(“c.3)))
(“a.1)
(“b.2)
(“c.3))
ELISP>(assoc“a”foo)
(“a.1)
ELISP>(cdr(助理“a”foo))
1.
assoc string
函数类似于assoc
函数,但特定于键为字符串的关联列表。除了key和alist之外,它还可以接受另一个使key比较不区分大小写的可选参数:
ELISP> (assoc-string "a" foo)
("a" . 1)
ELISP> (assoc-string "A" foo)
nil
ELISP> (assoc-string "A" foo t)
("a" . 1)
有关关联列表相关函数的完整列表,请参阅。允许您通过“键名”检索特定cons单元格的值
使用键和列表作为参数,可以为您提供与键关联的值。
例如:
(a.1)(b.2)(c.3)))
计算结果为1
默认情况下,与eq
进行比较。但它的完整参数列表是:
(列表获取键列表&可选默认删除测试fn)
因此,我们可以给出:
(setf(alist-get-KEY-alist-DEFAULT t)默认值)
TESTFN
用于将钥匙与车辆进行比较ELISP> (assoc-string "a" foo)
("a" . 1)
ELISP> (assoc-string "A" foo)
nil
ELISP> (assoc-string "A" foo t)
("a" . 1)
ELISP> (setq foo '(("a" . 1) ("b" . 2) ("c" . 3)))
(("a" . 1)
("b" . 2)
("c" . 3))
ELISP> (assoc-default "a" foo)
1