创建枚举类,方法为枚举
块到类定义。例如,工作日
班级列举一周中的几天。
classdef工作日枚举星期一,星期二,星期三,星期四,星期五结束结束
执行MATLAB®代码在下面的章节中,放置工作日
类的定义00
在你的路径上归档。
使用类名和成员名引用枚举成员:
类名称.MemberName
例如,赋值枚举成员工作日。周二
对该变量今天
:
今天= WeekDays.Tuesday;
今天
是类的变量吗工作日
:
谁
Name Size Bytes Class Attributes today 1x1 104 WeekDays
今天
今天=星期二
如果枚举类指定了超类,则通过将对象传递给超类构造函数将枚举对象转换为超类。但是,超类构造函数必须能够接受它自己的类作为输入并返回超类的实例。MATLAB内置的数值类,如uint32
,允许这种转换。
例如,轴承
类源于uint32
内置类:
classdef轴承< uint32枚举北(0)东(90)南(180)西(270)结束结束
分配轴承。东
变量的成员一个
:
一个= Bearing.East;
通过一个
返回父类构造函数并返回uint32
值:
b = uint32(一个);谁
Name Size Bytes Class Attributes a 1x1 60 Bearing b 1x1 4 uint32
的uint32
构造函数接受子类的对象轴承
并返回一个类的对象uint32
.
像任何MATLAB类一样在枚举类中定义方法。例如,这里是工作日
类,并调用方法isMeetingDay
补充道:
classdef工作日枚举星期一,星期二,星期三,星期四,星期五结束方法函数tf = = ~(WeekDays. (obj))周二= = obj);结束结束结束
调用isMeetingDay
的实例工作日
类:
今天= WeekDays.Tuesday;today.isMeetingDay
ans = 0
直接使用枚举成员作为方法的输入:
isMeetingDay (WeekDays.Wednesday)
ans = 1
当必须存储与枚举成员相关的数据时,向枚举类添加属性。在类构造函数中设置属性值。例如,SyntaxColors
类定义了三个属性,当引用类成员时,构造函数将它们的值赋给输入参数的值。
classdefSyntaxColors属性R G B结束方法函数c = SyntaxColors(r, g, b);c.G = g;c.B = b;结束结束枚举关键字(0,0,1)String (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结束