Next: シンボルの標準的なプロパティ, Up: シンボルのプロパティ [Contents][Index]
以下の関数を使用してシンボルプロパティーにアクセスできます。
この関数はsymbolのプロパティーリスト内の、名前がpropertyというプロパティーの値をリターンする。そのようなプロパティーが存在しなければnil
をリターンする。したがって値がnil
のときとプロパティーが存在しないときの違いはない。
名前propertyはeq
を使用して既存のプロパティーと比較されるので、すべてのオブジェクトがプロパティーとして適正である。
put
の例を参照のこと。
この関数はsymbolのプロパティーリストの、プロパティー名propertyにvalueをputして、前のプロパティー値を置き換える。put
関数はvalueをリターンする。
(put 'fly 'verb 'transitive) ⇒'transitive (put 'fly 'noun '(a buzzing little bug)) ⇒ (a buzzing little bug) (get 'fly 'verb) ⇒ transitive (symbol-plist 'fly) ⇒ (verb transitive noun (a buzzing little bug))
この関数はsymbolのプロパティーリストをリターンする。
この関数はsymbolのプロパティーリストをplistにセットする。plistは通常は適正なプロパティーリストであるべきだが、これは強制ではない。リターン値はplistです。
(setplist 'foo '(a 1 b (2 3) c nil)) ⇒ (a 1 b (2 3) c nil) (symbol-plist 'foo) ⇒ (a 1 b (2 3) c nil)
通常の用途には使用されない特別なobarray内のシンボルでは、非標準的な方法でプロパティーリストセルを使用することに意味があるかもしれない。実際にabbrev(abbrevとabbrev展開を参照)のメカニズムでこれを行なっている。
以下のようにsetplist
とplist-put
でput
を定義できる:
(defun put (symbol prop value) (setplist symbol (plist-put (symbol-plist symbol) prop value)))
この関数はget
と等価だがsymbolが関数のエイリアス名なら。実際の関数を命名するシンボルのプロパティリストを照合する点が異なる。関数の定義を参照のこと。オプション引数autoloadが非nil
で、symbolが自動ロードされていれば、その自動ロードによりsymbolのpropertyがセットされるかもしれないので、この関数はそれの自動ロードを試みるだろう。autoloadがシンボルmacro
なら、symbolが自動ロードされたマクロのときだけ自動ロードを試みる。
この関数はfunctionのpropertyにvalueをセットする。functionはシンボルであること。関数のプロパティのセットには、put
よりこの関数を呼び出すほうがよい。この関数を使用すれば、いつか古いプロパティから新しいプロパティへのリマップを実装することができるからである。