主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

패키지로네임스페이스생성하기

패키지폴더

패키지는클래스폴더,함수,클래스정의파일및다른패키지를포함할수있는특수폴더입니다。클래스이름의범위와함수이름의범위는패키지폴더로국한됩니다。패키지는일종의네임스페이스로서,그에서는이름이고유해야합니다。함수이름과클래스이름은패키지내에서는반드시고유해야합니다。패키지를사용하면클래스와함수를체계적으로구성할수있습니다。또한,다른패키지에서클래스와함수의이름을다시사용할수도있습니다。

참고

패키지는matlab®버전7.6이전에생성된클래스(즉,classdef를사용하지않는클래스)에서지원되지않습니다。

패키지폴더는항상+문자로시작합니다。예를들면다음과같습니다。

+ mypack + mypack / pkfcn.m% a包函数+ mypack / @myClass% class文件夹在包中

최상위패키지폴더의부모는matlab경로에있어야합니다。

패키지내용나열하기

帮助명령을사용하여패키지내용을나열할수있습니다。

帮助事件
事件的内容:EventData -事件。EVENTDATA事件数据的基类。PROPERTYEVENT对象属性事件监听器事件的事件数据。LISTENER监听对象proplistener事件。PROPLISTENER属性事件的监听器对象

什么명령을사용할수도있습니다。

什么事件
目录Y中的类:xxx\matlab\toolbox\matlab\lang\+event EventData PropertyEvent监听器proplistener

내부패키지

MathWorks®는내부matlab코드에서사용하는유틸리티함수에대해서는内部이라는패키지를사용하는것으로예약해두고있습니다。内部패키지에속하는함수는MathWorks만사용할수있습니다。内部패키지에속하는함수또는클래스를사용하는것은권장되지않습니다。이러한함수및클래스는릴리스간에일관된방식으로작동하지않을수있습니다。이러한함수및클래스는제품릴리스정보에문서화되지않은채후속릴리스의MATLAB에서예고없이제거될수있습니다。

패키지내에서패키지멤버참조하기

패키지를가져오지않을경우패키지내의패키지,함수,클래스에대한모든참조는패키지이름접두사를사용해야합니다。클래스가져오기항목을참조하십시오。예를들어,다음과같은패키지함수를호출하려면

+ mypack / pkfcn.m

다음구문을사용합니다。

Z = mypack.pkfcn(x,y);

정의에서는패키지접두사를사용하지않습니다。예를들어,pkfcn.m함수의함수정의라은함수이름만포함할수있습니다。

函数Z = pkfcn(x,y)

클래스이름만사용하여패키지클래스를정의합니다。

classdefmyClass

하지만호출할때는패키지접두사를사용합니다。

obj = mypack.myClass(arg1,arg2,…);

다음과같은경우는클래스의객체가있으므로클래스메서드를호출할때패키지이름이필요하지않습니다。점` ` `기법이나함수` ` ` `기법을사용할수있습니다。

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 / @MyFirstClass / MyFirstClass。m +mypack/@MySecondClass +mypack/@MySecondClass/MySecondClassm +mypack/+mysubpack +mypack/+mysubpack/myFcn.m

mypack에 포함된myFcn함수를호출합니다。

mypack.myFcn (arg)

mypack에포함된각클래스의스턴스를생성합니다。

obj1 = mypack.MyFirstClass;obj2 = mypack.MySecondClass(arg);

패키지mysubpack에 있는myFcn함수를호출합니다。

mypack.mysubpack.myFcn (__arg1、最长);

mypack。MyFirstClassmyFcn이라는메서드가있으면객체에대한메서드호출과같은방식으로이메서드를호출합니다。

obj = mypack.MyFirstClass;myFcn (obj, arg);

mypack。MyFirstClassMyProp라는속성이있으면점@ @기법과객체를사용하여속성값을할당합니다。

obj = mypack.MyFirstClass;obj。MyProp = x;

패키지와MATLAB경로

패키지폴더를MATLAB경로에추가할수는없지만패키지부모폴더는MATLAB경로에추가해야합니다。심지어패키지폴더가현재폴더이더라도패키지부모폴더MATLAB경가로에없으면패키지멤버에액세스할수없습니다。패키지폴더를현재폴더로만드는것만으로는패키지부모폴더가경로에추가되지않습니다。

패키지멤버의범위는여전히패키지로국한됩니다。항상패키지이름을사용하여패키지멤버를참조하십시오。또는,패키지멤버를호출하는함수로패키지를가져오십시오。클래스가져오기항목을참조하십시오。

클래스가다른클래스를가리는것과는달리,패키지폴더는경로에서자신보다뒤에나오는다른패키지폴더를가리지않습니다。둘이상의패키지가동일한이름을가질경우MATLAB은패키지모두를하나의패키지로취급합니다。각기다른경로폴더에서중복이름을갖는패키지가동일한함수이름을정의하는경우MATLAB은이러한함수중하나만찾습니다。

중복이름해결하기

패키지와클래스가동일한이름을갖는다고가정하겠습니다。예를들면다음과같습니다。

fldr_1 / + foo fldr_2 / @foo / foo.m

这foo를호출하면실행가능한클래스생성자에대한경로가반환됩니다。

>> which foo fldr_2/@foo/foo.m

함수와패키지는동일한이름을가질수있습니다。하지만패키지이름자체는식별자가아닙니다。따라서,중복이름만단독으로나타나는경우이는함수를식별하는것입니다。패키지이름만실행하면오류가반환됩니다。

패키지함수와정적메서드비교

패키지와클래스가동일한이름을갖는경우패키지함수가정적메서드보다우선합니다。예를들어,아래에서경로폴더fldrA는패키지함수를포함하고경로폴더fldrB는클래스정적메서드를포함합니다。

fldrA / + foo / bar。m % bar是包foo fldrB/@foo/bar中的函数。bar是类foo的一个静态方法

这foo.bar를호출하면패키지함수에대한경로가반환됩니다。

哪一个foo.bar
fldrA \ + foo \酒吧。M %包函数

동일한경로폴더가동일한이름을갖는패키지폴더와클래스폴더를모두포함하는경우패키지함수가정적메서드보다우선합니다。

fldr / @foo / bar.m% bar是类foo的一个静态方法fldr / + foo / bar.m% bar是包foo中的一个函数

这foo.bar를호출하면패키지함수에대한경로가반환됩니다。

哪一个foo.bar
fldr / + foo / bar.m

경로 폴더fldr에정적메서드酒吧를정의하는classdef파일喷火가들어있고동일한폴더에패키지함수酒吧를포함하는패키지+ foo가들어있는경우

fldr / foo.m% bar是类foo的一个静态方法fldr / + foo / bar.m% bar是包foo中的一个函数

这foo.bar를호출하면패키지함수에대한경로가반환됩니다。

哪一个foo.bar
fldr / + foo / bar.m

관련 항목