主要内容

定义枚举类

枚举类

通过添加列举块到类定义。例如平日类枚举一周中的一整天。

classdef平日列举周一周二周三周四周五终止终止

执行matlab®在以下部分中,将平日类定义.m在路径上的文件。

构造枚举成员

使用类名和成员名引用枚举成员:

类名.成员名

例如,分配枚举成员平日到变量今天:

今天=平日。

今天是类的变量平日:

名称大小字节类属性今天1x1 104平日
今天
今天=星期二

转换为超类值

如果枚举类指定超类,则可以通过将对象传递给超类构造函数来将枚举对象转换为超类。但是,超类构造函数必须能够接受自己的类作为输入并返回超类的实例。matlab内置数字类,如uint32,允许此转换。

例如,关系类派生自uint32内置类:

classdef轴承列举北(0)东(90)南(180)西(270)终止终止

分配方位,东方变量的成员A.:

a=方位。东;

通过A.到超类构造函数并返回auint32价值:

b=uint32(a);谁
名称大小字节类属性a 1x1 4轴承b 1x1 4 uint32

这个uint32构造函数接受子类的对象关系并返回一个类的对象uint32.

在枚举类中定义方法

像任何MATLAB类一样,在枚举类中定义方法。例如,定义一个名为今天是会议日为了平日枚举类。使用情况是用户在周二进行了经常性会议。该方法检查输入参数是否是一个实例平日成员星期二.

classdef平日列举周一周二周三周四周五终止方法功能tf=isMeetingDay(obj)tf=工作日。星期二==obj;终止终止终止

呼叫今天是会议日以一个平日类别:

今天=工作日。星期二;今天是会议日
ans=1

您还可以使用枚举成员作为方法的直接输入:

isMeetingDay(工作日、星期三)
ans=0

在枚举类中定义属性

当您必须存储与枚举成员相关的数据时,将属性添加到枚举类。在类构造函数中设置属性值。例如,合成色素类定义了三个属性。引用类成员时,类构造函数将输入参数的值分配给相应的属性。

classdef合成色素特性R G B终止方法功能c=合成色素(r,g,b)c.r=r;c、 G=G;c、 B=B;终止终止列举错误(1,0,0)注释(0,1,0)关键字(0,0,1)字符串(1,0,1)终止终止

当您引用枚举成员时,构造函数初始化属性值:

e=合成颜色。错误;e、 R
ans=1

因为合成色素是一个值类(它不是从手柄),只有类构造函数可以设置属性值:

e、 R=0
无法设置SyntaxColor的只读属性“R”。

有关定义属性的枚举类的详细信息,请参见可变句柄与不可变值枚举成员.

枚举类构造函数调用序列

枚举块中的每条语句都是枚举成员的名称,后面可以跟一个参数列表。如果枚举类定义了构造函数,MATLAB将调用该构造函数来创建枚举实例。

MATLAB为所有未明确定义构造函数的所有枚举类提供默认构造函数。默认构造函数创建枚举类的实例:

  • 如果枚举成员未定义输入参数,则不使用输入参数

  • 使用枚举类中为该成员定义的输入参数

例如布尔班级是0对于布尔,不1.对于布尔,是的.

classdef布尔<逻辑列举否(0)是(1)终止终止

价值观01.我们是同班同学必然的因为默认构造函数将参数传递给第一个超类。即,此语句:

n=布尔数;

结果打电话给必然的这相当于构造函数中的以下语句:

功能obj=布尔值(val)obj@logical(瓦尔)终止

MATLAB只将成员参数传递给第一个超类。例如,假设布尔派生自另一类:

classdefBool列举否(0)是(1)终止终止

这个米布尔类可以添加一些专门的行为:

classdef米布尔方法功能布尔值=测试布尔值(obj)...终止终止终止

默认值布尔构造函数的行为与定义的函数类似:

  • 参数传递给第一个超类构造函数

  • 没有传递给后续构造函数的参数

功能obj=布尔值(val)obj@logical(瓦尔)obj@MyBool终止

相关话题