Function INTERN
intern
string &optional
package => symbol, status
string - 文字列
package - パッケージ指定子。デフォルトは現在のパッケージ。
symbol - シンボル
status - 次のうちのどれか、 :inherited
, :external
, :internal
, nil
intern
は、packageにstringという名前のシンボルを挿入します。 もしpackageにstringという同じ名前のシンボルが すでにアクセス可能であったときは、それが返却されます。 packageにそのようなシンボルがアクセス可能になっていないときは、 新しいシンボルを指定した名前で作成し、 packageへ内部シンボルとして挿入するか、 もしpackageがKEYWORD
パッケージであったときは 外部シンボルとして挿入します。 作成されたシンボルのホームパッケージはpackageになります。
intern
の最初の返却値symbolは 検索されたものか作成されたシンボルです。 2番目の返却値statusは次の値になります。
:internal
:external
:inherited
use-package
経由で継承されているものが見つかった (これはシンボルが内部のものであることを意味します)。 nil
intern
の引数stringのとして与えらえれたとき、 続いてその文字列を変更しようとしたときの結果は未定義です。 in-package "COMMON-LISP-USER") => #<PACKAGE "COMMON-LISP-USER">
(intern "Never-Before") => |Never-Before|, NIL
(intern "Never-Before") => |Never-Before|, :INTERNAL
(intern "NEVER-BEFORE" "KEYWORD") => :NEVER-BEFORE, NIL
(intern "NEVER-BEFORE" "KEYWORD") => :NEVER-BEFORE, :EXTERNAL (
なし。
なし。
なし。
find-symbol
, read
, symbol
, unintern
, 2.3.4. トークンとしてのシンボル
intern
が名前の衝突チェックを行う必要はなく、 なぜなら指定した名前のシンボルがすでにアクセス可能であるときに 新しいシンボルを作成するようなことはないからです。