Function REMPROP

UP


Function REMPROP

Function REMPROP

構文

remprop symbol indicator => generalized-boolean

引数と戻り値

symbol - シンボル
indicator - オブジェクト
generalized-boolean - generalized-boolean

定義

rempropは、symbolのプロパティリストから indicatorと同一の標識のプロパティを削除します。 標識に対してキーが同一のプロパティが複数あるときは、 rempropは最初のプロパティを削除します。 標識に対するプロパティが存在しないときはfalseを、 プロパティが見つかった時はtrueを返却します。

プロパティのindicatorと対応する値は、 プロパティリストを順不同で破壊的につなぎ合わせることにより削除します。 許容される副作用は、remfのものに対応します。 つまり、下記のようになります。

(remprop x y) ==  (remf (symbol-plist x) y)

例文

(setq test (make-symbol "PSEUDO-PI")) =>  #:PSEUDO-PI
(symbol-plist test) =>  ()
(setf (get test 'constant) t) =>  T
(setf (get test 'approximation) 3.14) =>  3.14
(setf (get test 'error-range) 'noticeable) =>  NOTICEABLE
(symbol-plist test) 
=>  (ERROR-RANGE NOTICEABLE APPROXIMATION 3.14 CONSTANT T)
(setf (get test 'approximation) nil) =>  NIL
(symbol-plist test) 
=>  (ERROR-RANGE NOTICEABLE APPROXIMATION NIL CONSTANT T)
(get test 'approximation) =>  NIL
(remprop test 'approximation) =>  true
(get test 'approximation) =>  NIL
(symbol-plist test)
=>  (ERROR-RANGE NOTICEABLE CONSTANT T)
(remprop test 'approximation) =>  NIL
(symbol-plist test)
=>  (ERROR-RANGE NOTICEABLE CONSTANT T)
(remprop test 'error-range) =>  true
(setf (get test 'approximation) 3) =>  3
(symbol-plist test)
=>  (APPROXIMATION 3 CONSTANT T)

副作用

シンボルのプロパティリストは修正されます。

影響

なし。

例外

symbolがシンボルではないとき、 型type-errorのエラーが発生します。

参考

remf, symbol-plist

備考

rempropindicatorのテストに eqlではなくeqを用いるため、 移植しやすいコードとして、 indicatorに数と文字を使うことは推奨されません。 そのため、そのようなindicatorを使ったときの効果は 実装依存です。 もちろん、そのようなプロパティを削除する必要がある場合は、 仕方がないことです。 プロパティに対してgetsetfを使うことを 考えてみて下さい。


TOP, Github