library (プリミティブ)
パッケージ: CURL.LANGUAGE.CORE-TYPES

ライブラリアクセス可能な定義を指定します。

説明

ライブラリアクセスの定義は同じライブラリの中のコードでアクセスされます。すなわち、同じマニフェストの定義を含んでいるパッケージのどのようなコードからでもアクセスされます。(get-default-manifest-for-package 参照)。 空のデフォルトマニフェストの library のパッケージ内の定義は package アクセスと同じです。
ライブラリの外のコードへアクセスをさせずに、同じマニフェストで定義されたパッケージのライブラリ内でコードを共有したい場合に、library を使用します。
フィールドの場合、librarylibrary-getlibrary-set と同等です。
publicprotectedpackageprivate も参照してください。

二つの AB パッケージがあると仮定します。BA をインポートし、両方のパッケージは同じマニフェストで定義された同じライブラリの一部です。:
{curl 8.0 manifest}

{manifest MY-LIBRARY}

{component package A, location = "A/load.scurl"}

{component package B, location = "B/load.scurl"}
もし、パッケージ A がユーティリティー関数 library-error を定義し、それが全てのエラーについてフォーマットしスローする機能を持ち、ライブラリの外側から呼び出されるのを防ぐには、library 属性を使用することができます。:
{define-proc library {library-error
                         fmt:String, ...:any
                     }:never-returns
    {throw {MyLibraryException {format fmt, ...}}}
}

注意事項

セキュリティやプライバシーのために外部からアクセスさせてはいけないコードに library 属性を使用すべきではありません。これは任意のアプレットやスクリプトが主のマニフェストとしてどのマニフェストでも使用される可能性があるからです。したがって library-protected メンバーを使用してください。デフォルトのマニフェストとしてライブラリのマニフェストを使用することや library-protected メンバーにアクセスするために evaluate を使用することで OpenPackage を作成することが可能です。
導入: バージョン 7.0