このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
パッケージは、クラス フォルダーや、関数ファイルとクラス定義ファイル、その他のパッケージを含むことができる特別なフォルダーです。クラスおよび関数の名前はパッケージ フォルダーのスコープをもちます。パッケージは、名前が一意でなければならない名前空間です。関数名とクラス名はパッケージ内に限り一意でなければなりません。パッケージを使用することにより、クラスと関数を整理する手段が提供されます。また、パッケージ化することで、クラスと関数の名前を他のパッケージで再使用できるようにもなります。
メモ
パッケージは,MATLAB®7.6版本よりも前に作成されたクラス(つまり,classdef
を使用しないクラス)ではサポートされません。
パッケージ フォルダーは常に+
文字で始まります。次に例を示します。
+ mypack + mypack / pkfcn.m%包函数+ mypack / @myClass%类文件夹在包中
最上位のパッケージフォルダーの親フォルダーは,MATLABパス上になければなりません。
パッケージの内容を一覧表示するには、以下のように帮助
コマンドを実行します。
帮助事件
事件的内容:EventData - event。事件数据的基础类。PROPERTYEVENT对象属性事件监听器事件的事件数据。LISTENER监听对象proplistener -事件。PROPLISTENER属性事件的侦听器对象
什么
コマンドを使うこともできます。
什么事件
类目录Y:xxx\matlab\toolbox\matlab\lang\+event EventData PropertyEvent listener proplistener
MathWorks®では,MATLABの内部コードで使用されるユーティリティ関数用に内部
という名前の付いたパッケージの使用権を留保しています。内部
パッケージに属する関数はMathWorks専用のものです。内部
パッケージに属する関数またはクラスの使用は推奨されません。新しいソフトウェアがリリースされると、前のリリースで使用していた関数やクラスが同じように動作しなくなる可能性があります。MATLABソフトウェアの今後のリリースでは、これらの関数やクラスが予告なく削除され、製品のリリース ノートにその旨が記載されない可能性があります。
パッケージ内のパッケージ,関数,クラスに対するすべての参照は,パッケージをインポートしない場合には,パッケージの名前の接頭辞を使用する必要があります(クラスのインポートを参照)。たとえば,次のパッケージ関数を呼び出します。
+ mypack / pkfcn.m
次の構文を使用します。
z = mypack.pkfcn (x, y);
定義ではパッケージの接頭辞を使用しません。たとえば、関数pkfcn.m
の関数定義行には,関数名のみが含まれます。
函数z = pkfcn (x, y)
クラス名だけでパッケージクラスを定義します。
classdefmyClass
ただし,これをパッケージの接頭辞で呼び出します。
obj = mypack.myClass (__arg1,最长,…);
ユーザーはクラスのオブジェクトをもっているので,クラスメソッドを呼び出すときにパッケージ名を必要としません。ドット表記または関数表記を使用できます。
obj.myMethod(arg)myMethod(obj,arg)
静的メソッドは,パッケージ名を含む完全クラス名を必要とします。
mypack.myClass.stMethod (arg)
あるパッケージに含まれる関数,クラスおよびその他のパッケージは,そのパッケージをスコープとします。パッケージメンバーのいずれかを参照するには、メンバー名の前にパッケージ名を置き、その間をドットで区切ります。たとえば、次のステートメントは、mypack
パッケージに含まれるMyClass
のインスタンスを作成します。
obj = mypack.MyClass;
この節では,パッケージの外からさまざまなパッケージメンバーにアクセスする方法について説明します。以下の内容をもつパッケージmypack
があるとします。
+mypack+mypack/myFcn.m+mypack/@MyFirstClass+mypack/@MyFirstClass/myFcn.m+mypack/@MyFirstClass/otherFcn.m+mypack/@MySecondClass/mypack/@MySecondClass/MySecondClass.m+mypack/+mysubpack+myFcn.m
mypack
の関数myFcn
を呼び出します。
mypack.myFcn (arg)
mypack
の各クラスのインスタンスを作成します。
其中obj1 = mypack.MyFirstClass;methoda = mypack.MySecondClass (arg);
パッケージmysubpack
の関数myFcn
を呼び出します。
mypack.mysubpack.myFcn (__arg1、最长);
mypack。MyFirstClass
がmyFcn
と呼ばれるメソッドをもつ場合,オブジェクトを呼び出すメソッドと同様にして呼び出します。
obj = mypack.MyFirstClass;myFcn (obj, arg);
mypack。MyFirstClass
がMyProp
と呼ばれるプロパティをもつ場合,ドット表記とオブジェクトを使用して割り当てます。
obj = mypack.MyFirstClass;obj。MyProp = x;
MATLABパスにパッケージフォルダーを追加することはできません。ただし,パッケージの親フォルダーをMATLABパスに追加しなければなりません。MATLABパス上にパッケージの親フォルダーがない場合、パッケージ フォルダーが現在のフォルダーである場合でもパッケージのメンバーにアクセスできません。パッケージの親フォルダーをパスに追加するには、パッケージ フォルダーを現在のフォルダーにするだけでは不十分です。
パッケージのメンバーのスコープはパッケージ内のままです。常にパッケージ名を使用してパッケージのメンバーを参照する必要があります。あるいは,パッケージメンバーを呼び出すことができる関数にパッケージをインポートします。クラスのインポートを参照してください。
パッケージフォルダーはクラスとは異なり,パス上で後方に位置する他のパッケージフォルダーを隠すことはありません。2つ以上のパッケージが同じ名前である場合,MATLABはそれらすべてを1つのパッケージとして扱います。異なるパスフォルダーにある,名前の重複するパッケージで同じ関数名が定義されている場合,MATLABはそのうちの1つの関数しか検出しません。
パッケージとクラスが同じ名前をもつと仮定します。次に例を示します。
fldr_1 / + foo fldr_2 / @foo / foo.m
这foo
への呼び出しでは,実行可能なクラスコンストラクターへのパスが返されます。
>>哪个foo fldr_2/@foo/foo.m
関数とパッケージは,同じ名前をもつことができます。ただし,パッケージ名は,それだけでは識別子になりません。そのため,重複する名前だけがある場合,関数を識別します。パッケージの名前のみを実行すると,エラーになります。
パッケージとクラスが同じ名前をもつ場合,パッケージ関数は,静的メソッドに優先します。たとえば,パスフォルダーfldrA
にパッケージ関数が含まれ,パスフォルダーfldrB
にクラスの静的メソッドが含まれているとします。
fldrA / + foo / bar.m% bar是包foo中的一个函数fldrB / @foo / bar.m% bar是类foo的一个静态方法
这foo.bar
の呼び出しは,パッケージ関数のパスを返します。
哪一个美食酒吧
fldrA \ + foo \酒吧。包函数
同じパスフォルダーに,同じ名前のパッケージとクラスフォルダーが含まれている場合は,パッケージ関数が静的メソッドに優先します。
fldr / @foo / bar.m% bar是类foo的一个静态方法fldr / + foo / bar.m% bar是包foo中的一个函数
这foo.bar
の呼び出しは,パッケージ関数のパスを返します。
哪一个美食酒吧
fldr / + foo / bar.m
パスフォルダーfldr
に,静的メソッド酒吧
を定義するclassdef
ファイル喷火
が含まれ、同じフォルダーにパッケージ関数酒吧
を含むパッケージ+ foo
が含まれているとします。
fldr/foo.m% bar是类foo的一个静态方法fldr / + foo / bar.m% bar是包foo中的一个函数
这foo.bar
の呼び出しは,パッケージ関数のパスを返します。
哪一个美食酒吧
fldr / + foo / bar.m