Next: , Up: シンボルのプロパティ   [Contents][Index]


9.4.1 シンボルのプロパティへのアクセス

以下の関数を使用してシンボルプロパティにアクセスできます。

Function: get symbol property

この関数はsymbolのプロパティリスト内の、名前がpropertyというプロパティの値をリターンする。そのようなプロパティが存在しなければnilをリターンする。したがって値がnilのときとプロパティが存在しないときの違いはない。

名前propertyeqを使用して既存のプロパティと比較されるので、すべてのオブジェクトがプロパティとして適正である。

putの例を参照のこと。

Function: put symbol property value

この関数はsymbolのプロパティリストの、プロパティ名propertyvalueを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))
Function: symbol-plist symbol

この関数はsymbolのプロパティリストをリターンする。

Function: setplist symbol plist

この関数は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展開を参照)のメカニズムでこれを行なっている。

以下のようにsetplistplist-putputを定義できる:

(defun put (symbol prop value)
  (setplist symbol
            (plist-put (symbol-plist symbol) prop value)))
Function: function-get symbol property &optional autoload

この関数はgetと等価だがsymbolが関数のエイリアス名なら。実際の関数を命名するシンボルのプロパティリストを照合する点が異なる。関数の定義を参照のこと。オプション引数autoloadが非nilで、symbolが自動ロードされていれば、その自動ロードによりsymbolpropertyがセットされるかもしれないので、この関数はそれの自動ロードを試みるだろう。autoloadがシンボルmacroなら、symbolが自動ロードされたマクロのときだけ自動ロードを試みる。

Function: function-put function property value

この関数はfunctionpropertyvalueをセットする。functionはシンボルであること。関数のプロパティのセットには、putよりこの関数を呼び出すほうがよい。この関数を使用すれば、いつか古いプロパティから新しいプロパティへのリマップを実装することができるからである。