Function COPY-SYMBOL

UP


Function COPY-SYMBOL

Function COPY-SYMBOL

構文

copy-symbol symbol &optional copy-properties => new-symbol

引数と戻り値

symbol - シンボル
copy-properties - generalized-boolean、デフォルトはfalse
new-symbol - 新しい、uninternなシンボル

定義

copy-symbolは、新しく、uninternであり、 引数symbolの名前とstring=で等しい名前を持つシンボルを返却します。 そのシンボル名は、引数のシンボル名と同じである可能性があります。

copy-propertiesfalseのときは、 new-symbolは、boundでも、fboundでもなく、 nullのプロパティリストを持ちます。 copy-propertiestrueのときは、 new-symbolの初期値はsymbolの値であり、 new-symbolの関数定義の初期値はsymbolの関数の値であり、 new-symbolのプロパティリストの初期値は symbolのプロパティリストのコピーされた値です。

例文

(setq fred 'fred-smith) =>  FRED-SMITH
(setf (symbol-value fred) 3) =>  3
(setq fred-clone-1a (copy-symbol fred nil)) =>  #:FRED-SMITH
(setq fred-clone-1b (copy-symbol fred nil)) =>  #:FRED-SMITH
(setq fred-clone-2a (copy-symbol fred t))   =>  #:FRED-SMITH
(setq fred-clone-2b (copy-symbol fred t))   =>  #:FRED-SMITH
(eq fred fred-clone-1a) =>  false
(eq fred-clone-1a fred-clone-1b) =>  false
(eq fred-clone-2a fred-clone-2b) =>  false
(eq fred-clone-1a fred-clone-2a) =>  false
(symbol-value fred) =>  3
(boundp fred-clone-1a) =>  false
(symbol-value fred-clone-2a) =>  3
(setf (symbol-value fred-clone-2a) 4) =>  4
(symbol-value fred) =>  3
(symbol-value fred-clone-2a) =>  4
(symbol-value fred-clone-2b) =>  3
(boundp fred-clone-1a) =>  false
(setf (symbol-function fred) #'(lambda (x) x)) =>  #<FUNCTION anonymous>
(fboundp fred) =>  true
(fboundp fred-clone-1a) =>  false
(fboundp fred-clone-2a) =>  false

副作用

なし。

影響

なし。

例外

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

参考

make-symbol

備考

実装者は、むやみにシンボル名の文字をコピーする必要はありません。 通常の実装においては、 new-symbolの名前と引数symbolの名前をコピーして同一にするのは、 良い方法とは言えません。


TOP, Github