プロパティリストを操作するには、以下の関数が利用できます。いずれもデフォルトでは、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
これにより、プロパティリスト plist の property プロパティの値として value
が格納されます。比較は 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))
この廃止された関数は、eqの代わりにequalを用いてプロパティを比較する点を除けば、plist-getと同様です。
この廃止された関数は、eqの代わりにequalを用いてプロパティを比較する点を除けば、plist-putと同様です。
plist に指定された property
が含まれている場合、non-nil を返します。比較には predicate が使用され、デフォルトは eq
です。plist-get とは異なり、これによりプロパティが欠落している場合と、値が nil である場合を区別できます。実際の値は、car が
property である plist の末尾部分となります。