Function SHADOW

UP


Function SHADOW

Function SHADOW

構文

shadow symbol-names &optional package => t

引数と戻り値

symbol-names - 文字列指定子のリストの指定子
package - パッケージ指定子。デフォルトは現在のパッケージ。

定義

shadowは、symbol-namesによって与えられ名前のシンボルが package内に存在することを保証します。

とくにpackagesymbol-namesによって指定された名前を持つシンボルを探します。 そのようなそれぞれの名前に対して、 もしpackageの中に対応するシンボルが現れなかったとき (直接としてであり、継承によるものではないとき)、 対応するシンボルはその名前で作成され、 pacakgeへ内部シンボルとして挿入されます。 対応するシンボルは、 既存のものでも新しく作成されたものでもまだ存在していなければ、 packageshadowingシンボルリストに追加されます。

例文

(package-shadowing-symbols (make-package 'temp)) =>  NIL
(find-symbol 'car 'temp) =>  CAR, :INHERITED
(shadow 'car 'temp) =>  T
(find-symbol 'car 'temp) =>  TEMP::CAR, :INTERNAL
(package-shadowing-symbols 'temp) =>  (TEMP::CAR)
(make-package 'test-1) =>  #<PACKAGE "TEST-1">
(intern "TEST" (find-package 'test-1)) =>  TEST-1::TEST, NIL
(shadow 'test-1::test (find-package 'test-1)) =>  T
(shadow 'TEST (find-package 'test-1)) =>  T
(assert (not (null (member 'test-1::test (package-shadowing-symbols
                                           (find-package 'test-1))))))

(make-package 'test-2) =>  #<PACKAGE "TEST-2">
(intern "TEST" (find-package 'test-2)) =>  TEST-2::TEST, NIL
(export 'test-2::test (find-package 'test-2)) =>  T
(use-package 'test-2 (find-package 'test-1))    ;should not error

副作用

shadowは、パッケージの一貫したルールが その変更によって保持されないような方法で、 パッケージシステムの状態を変更します。

影響

パッケージシステムの現在の状態。

例外

なし。

参考

package-shadowing-symbols, 11.1. パッケージの説明

備考

もしpackage内にsymbol-namesという名前のシンボルが既に存在していたときは、 それが継承によるものであったときは、 継承されたシンボルは新しく作成された内部シンボルによってシャドウされます。


TOP, Github