Function USE-PACKAGE

UP


Function USE-PACKAGE

Function USE-PACKAGE

構文

use-package packages-to-use &optional package => t

引数と戻り値

packages-to-use - パッケージ指定子のリストの指定子。 KEYWORDパッケージは指定されません。
package - パッケージ指定子。デフォルトは現在のパッケージ。 packageにはKEYWORDパッケージは指定できません。

定義

use-packageは、packageに対して、 packages-to-useの全ての外部シンボルを継承します。 継承されたシンボルは、packageの内部シンボルとして アクセスできるようになります。

packages-to-useは、packageuseリストに、 もしそれらが現れていないときは追加されます。 packages-to-useの全ての外部シンボルは、 packageの内部シンボルとしてアクセスできるようになります。 use-packagepackageに新しいシンボルが現れるようなことはせず、 ただそれらを継承によってアクセス可能にするだけです。

use-packageは、新しく入ってくるシンボルと、 それらがpackage内ですでにアクセス可能なものとの間で 名前の衝突のチェックを行います。 packages-to-useからpackageによって継承される 2つの外部シンボル間に生じたuse-packageの名前衝突は、 それらのpackage内に入ってくるどちらかのシンボルを選び、 それをshadowingシンボルにすることで解決できます。

例文

(export (intern "LAND-FILL" (make-package 'trash)) 'trash) =>  T
(find-symbol "LAND-FILL" (make-package 'temp)) =>  NIL, NIL
(package-use-list 'temp) =>  (#<PACKAGE "TEMP">)
(use-package 'trash 'temp) =>  T
(package-use-list 'temp) =>  (#<PACKAGE "TEMP"> #<PACKAGE "TRASH">)
(find-symbol "LAND-FILL" 'temp) =>  TRASH:LAND-FILL, :INHERITED

副作用

packageuseリストは修正されます。

影響

なし。

例外

なし。

参考

unuse-package, package-use-list, 11.1. パッケージの説明

備考

パッケージP2がすでにパッケージP1を使用していたときでさえ、 P1P2を使用することは許されます。 パッケージのuseは推移的ではないので、 循環構造が現れても問題がありません。


TOP, Github