シンボル以外の場所に保存した属性リストの操作に便利な2つの関数があります。
これは、属性リストplistに保存されている属性propertyの値を返す。 たとえば、つぎのとおり。
(plist-get '(foo 4) 'foo) ⇒ 4
これは、属性リストplistに、 propertyの値としてvalueを格納する。 これはplistを破壊的に変更するか、あるいは、 古いものを変更せずに新たなリスト構造を構築する。 関数は変更した属性リストを返すので、 plistを保持していたところへ保存し直せる。 たとえば、つぎのとおり。
(setq my-plist '(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-put
を用いてput
を定義できます。
(defun put (symbol prop value) (setplist symbol (plist-put (symbol-plist symbol) prop value)))