定义枚举类
枚举类
类来创建枚举类枚举
块到一个类定义。例如,工作日
类枚举一周中的一组天。
classdef工作日枚举星期一、星期二、星期三、星期四、星期五结束结束
执行MATLAB®代码中,放置工作日
类的定义。00
在您的路径上归档。
构造一个枚举成员
使用类名和成员名引用枚举成员:
类名称.MemberName
例如,分配枚举成员工作日。周二
对该变量今天
:
今天= WeekDays.Tuesday;
今天
是类的变量吗工作日
:
谁
名称大小字节类属性今天1x1 104工作日
今天
今天=星期二
转换为超类值
如果枚举类指定了超类,则可以通过将对象传递给超类构造函数来将枚举对象转换为超类。但是,超类构造函数必须能够接受它自己的类作为输入并返回超类的实例。MATLAB内置的数值类,如uint32
,允许此转换。
例如,轴承
类派生自uint32
内置类:
classdef轴承< uint32枚举北(0)东(90)南(180)西(270)结束结束
分配轴承。东
变量的成员一个
:
一个= Bearing.East;
通过一个
赋给超类构造函数并返回一个uint32
值:
b = uint32(一个);谁
名称大小字节类属性a 1x1 4轴承b 1x1 4 uint32
的uint32
构造函数接受子类的对象轴承
并返回class的对象uint32
.
在枚举类中定义方法
在枚举类中定义方法,就像任何MATLAB类一样。例如,定义一个方法称为isMeetingDay
为工作日
枚举类中。用例是用户在周二有一个重复的会议。方法检查输入参数是否为工作日
成员周二
.
classdef工作日枚举星期一、星期二、星期三、星期四、星期五结束方法函数tf = isMeetingDay(obj) tf =工作日。周二= = obj;结束结束结束
调用isMeetingDay
的实例工作日
类:
今天= WeekDays.Tuesday;today.isMeetingDay
ans = 1
你也可以使用枚举成员作为方法的直接输入:
isMeetingDay (WeekDays.Wednesday)
ans = 0
在枚举类中定义属性
如果必须存储与枚举成员相关的数据,则向枚举类添加属性。在类构造函数中设置属性值。例如,SyntaxColors
类定义了三个属性。当引用类成员时,类构造函数将输入参数的值赋给相应的属性。
classdefSyntaxColors属性R G B结束方法函数c = SyntaxColors(r, g, b) c = r;c.G = g;c.B = b;结束结束枚举错误(1,0,0)评论(0,1,0)关键字(0,0,1)字符串(1,0,1)结束结束
当引用枚举成员时,构造函数初始化属性值:
e = SyntaxColors.Error;在途中
ans = 1
因为SyntaxColors
是一个值类(它不派生自?处理
),只有类的构造函数可以设置属性值:
急诊= 0
您不能设置SyntaxColors的只读属性'R'。
有关定义属性的枚举类的更多信息,请参见可变句柄与不可变值枚举成员.
枚举类构造函数调用序列
枚举块中的每个语句都是枚举成员的名称,后面可选地跟着一个参数列表。如果枚举类定义了一个构造函数,MATLAB调用该构造函数来创建枚举实例。
MATLAB为所有没有显式定义构造函数的枚举类提供了默认构造函数。默认构造函数创建枚举类的一个实例:
如果枚举成员没有定义输入参数,则不使用输入参数
使用在该成员的枚举类中定义的输入参数
的输入参数保龄球
类0
为保龄球没有
而且1
为保龄球是的
.
classdefBool <逻辑枚举否(0)是(1)结束结束
的值0
而且1
的类逻辑
因为默认构造函数将参数传递给第一个超类。也就是说,这句话:
n = Bool.No;
的调用结果逻辑
这相当于构造函数中的以下语句:
函数obj = Bool(val) obj@logical(val)结束
MATLAB只将成员参数传递给第一个超类。例如,假设保龄球
派生自另一个类的:
classdefBool < logical & MyBool枚举否(0)是(1)结束结束
的MyBool
类可以添加一些专门的行为:
classdefMyBool方法函数boolValues = testBools (obj)...结束结束结束
默认的保龄球
构造函数的行为就像这样定义:
参数传递给第一个超类构造函数
没有参数传递给后续的构造函数
函数obj = Bool(val) obj@logical(val) obj@MyBool结束