パッケージ - モジュールを使ってパッケージを作る
|
説明
|
|
•
|
モジュールを使った簡単な応用例には、パッケージの作成があります。「パッケージ」とは、ある方法で集めたルーチン群(データを伴うこともある)のことです。パッケージは、通常、ある適切に定義された領域における問題を解決するための、一連の機能を提供しています。パッケージの適用範囲が非常に広いこともあれば、とても狭いこともあります。何が適切かどうかということは、パッケージの製作者に依存しています。
|
•
|
モジュールを使ってパッケージを作るには、モジュールのエクスポート変数としてユーザに利用して欲しいルーチンの名前を列挙するだけです。モジュールの定義中に(公開用の)ルーチンをエクスポート変数として宣言し、その定義を書き、完成したモジュールに名前を割り当てれば良いのです。
|
•
|
パッケージとして利用するモジュールには、オプションに package オプションを宣言する必要があります。パッケージの出力は自動的に保護され、with コマンドを使用して会話形式のセッションを持続することができます。
|
•
|
作成したルーチンで使われている重要な内部データが、ユーザにより不用意に変更されるのを防ぐため、そのようなデータをそのパッケージ内のみで使用可にするのが良い。これは、パッケージ用に作成しているモジュールで、局所変数(エクスポート変数ではない)を使うことにより実現できます。
|
•
|
作成したパッケージ(または他の任意のモジュール)を保存するには、倉庫を含んでいるディレクトリが大域変数 libname の中で最初に表記してあることを確認するか、大域変数 savelibname に自作の倉庫を含むディレクトリの名前を(文字列として)割り当てるかします。その上で、作成したパッケージの名前だけを引数として savelib という手続きを使います。これで、作成したパッケージのコピーが倉庫の中に保存されます。大域変数 libname の中に有るのと同じディレクトリ名が含まれていれば、どの Maple セッションからでも、名前だけでそのパッケージをアクセスすることができるでしょう。
|
|
|
例
|
|
この例では、大域変数 `libname' の中に列挙されている書き込み可能な倉庫が存在していることを前提としています。
>
|
MyPackage := module()
export f1, f2;
local loc1;
option package;
f1 := proc() loc1 end proc;
f2 := proc( v ) loc1 := v end proc;
loc1 := 2;
end module:
savelib( 'MyPackage' ):
restart:
with( MyPackage );
|
|
|
Download Help Document
Was this information helpful?