可以使用下列函数来操作属性表。它们在比较属性名时,默认都使用 eq。
该函数返回存储在属性列表 plist 中 property 属性对应的值。属性名的比较通过 predicate 完成(该参数默认值为 eq)。函数允许传入格式不规范的 plist 参数;若在 plist 中未找到 property,则返回 nil。例如:
(plist-get '(foo 4) 'foo)
⇒ 4
(plist-get '(foo 4 bad) 'foo)
⇒ 4
(plist-get '(foo 4 bad) 'bad)
⇒ nil
(plist-get '(foo 4 bad) 'bar)
⇒ nil
该函数将 value 作为属性 property 的值,存储到属性列表 plist 中。属性名的比较通过 predicate 完成(该参数默认值为 eq)。此函数可能会破坏性修改 plist,也可能构建新的列表结构而不改动原列表。函数返回修改后的属性列表,因此你可以将返回值存回原本获取 plist 的位置。例如:
(setq my-plist (list 'bar t 'foo 4))
⇒ (bar t foo 4)
(setq my-plist (plist-put my-plist 'foo 69))
⇒ (bar t foo 69)
(setq my-plist (plist-put my-plist 'quux '(a)))
⇒ (bar t foo 69 quux (a))
该废弃函数的功能与 plist-get 类似,区别在于它使用 equal 而非 eq 来比较属性名。
该废弃函数的功能与 plist-put 类似,区别在于它使用 equal 而非 eq 来比较属性名。
若 plist 中包含指定的 property,该函数返回非-nil 值。属性名的比较通过 predicate 完成(该参数默认值为 eq)。与 plist-get 不同,此函数可区分「属性不存在」和「属性值为 nil」两种情况。函数的返回值实际是 plist 中以 property 为 car(首部元素)的那个子列表(即 plist 的尾部)。