文档

包创建名称空间

包文件夹

包是可以包含类的文件夹,函数和类定义文件包等特殊文件夹。类和函数的名称被限定在包文件夹。包是在其中的名字必须是唯一的命名空间。函数和类名必须只在该包是唯一的。使用包提供到组织的类和功能的装置。包还使您能够重复使用在不同的包类和函数的名称。

注意

包不支持前MATLAB创建的类万博1manbetx®版本7.6(即,不使用的类classdef)。

包文件夹始终与开始+字符。例如,

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

顶级包文件夹的父文件夹必须位于MATLAB路径上。

列出包的内容

属性列出包的内容帮助命令:

帮助事件
活动内容:EVENTDATA  -  event.EVENTDATA基类的事件数据PropertyEvent  - 为对象属性的事件监听器event.PROPERTYEVENT事件数据 -  event.LISTENER监听对象proplistener  -  event.PROPLISTENER监听对象的属性Events

您也可以使用什么命令:

什么事件
在目录Ÿ类:XXX \ MATLAB \工具箱\ MATLAB目录\ lang \ +事件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包。

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

调用myFcn函数mypack

mypack.myFcn (arg)

中的每个类创建一个实例mypack

OBJ1 = mypack.MyFirstClass;OBJ2 = mypack.MySecondClass(ARG);

调用myFcn在包中的函数mysubpack

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路径。如果包父文件夹是不是MATLAB的路径,即使包文件夹是当前文件夹封装部件不可访问。制作包文件夹当前文件夹不足以包父文件夹添加到路径。

包成员仍然是包的作用域。始终使用包名引用包成员。或者,将包导入到调用包成员的函数中,参见导入类

包文件夹没有影子的路径上后定位其他包文件夹,与类不同,它做的阴影其他类。如果两个或多个包具有相同的名称,MATLAB对待他们都为一个包。如果在不同的文件夹路径冗余命名包定义了相同的函数名,然后MATLAB只找到这些功能之一。

解决冗余的名字

假设一个包和一类具有相同的名称。例如:

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

呼叫到其中FOO返回路径的可执行类的构造函数:

>>这个foo fldr_2/@foo/foo.m

一个函数和一个包可以具有相同的名称。然而,通过本身包名不是标识符。因此,如果发生单独一个多余的名字,它所标识的功能。单独执行包名返回一个错误。

包装功能与静态方法

在一个包和类的名称相同的情况下,静态的方法优先于包功能。例如,路径文件夹fldrA包含一个函数包和路径文件夹fldrB包含类静态方法:

fldrA / + foo / bar.m%杆处于软件包foo的函数fldrB / @foo / bar.m%栏是类FOO的静态方法

呼叫到这foo.bar返回静态方法的路径:

哪一个foo.bar
fldrB / @foo / bar.m

如果同一路径文件夹包含同名的包文件夹和同名的类文件夹,则类静态方法优先于包函数。

fldr/@foo/bar.m%栏是类FOO的静态方法fldr / + foo / bar.m%杆处于软件包foo的函数

呼叫到这foo.bar返回静态方法的路径:

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

相关的话题

这个话题有用吗?