通过添加一个创建一个枚举类枚举
块类定义。例如,工作日
类列举了一系列的日子。
classdef工作日枚举星期一、星期二、星期三、星期四、星期五结束结束
执行MATLAB®代码在下面几节中,将工作日
类定义在一个00
文件在你的路径。
指一个枚举成员使用类名和成员的名字:
类名称。MemberName
例如,枚举成员分配WeekDays.Tuesday
对该变量今天
:
今天= WeekDays.Tuesday;
今天
是一个变量的类工作日
:
谁
类属性名称大小字节今天1 x1 104个工作日
今天
今天=星期二
如果一个枚举类指定一个超类,可以将枚举对象转换为超类对象传递至超类构造函数。然而,超类构造函数必须能够接受自己的类作为输入,并返回一个超类的实例。MATLAB内置数字类,如uint32
,允许这种转换。
例如,轴承
类来源于uint32
内置类:
classdef轴承< uint32枚举北东(90)(0)南(180)西(270)结束结束
分配Bearing.East
成员变量一个
:
一个= Bearing.East;
通过一个
超类构造函数并返回uint32
值:
b = uint32(一个);谁
类属性名称大小字节1 x1 60 b 1 x1 4 uint32轴承
的uint32
构造函数接受一个子类的对象轴承
并返回一个对象的类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 c (r, g, b)。R = 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为所有枚举类,提供一个默认的构造函数没有明确定义一个构造函数。默认构造函数创建一个枚举类的实例:
使用任何输入参数,如果枚举成员定义没有输入参数
使用输入参数中定义的枚举类的成员
例如,输入参数的Bool
类0
为Bool.No
和1
为Bool.Yes
。
classdefBool <逻辑枚举否(0)是(1)结束结束
的值0
和1
的类逻辑
因为默认构造函数将参数传递给第一个超类。也就是说,这句话:
n = Bool.No;
在调用结果逻辑
这相当于在构造函数如下声明:
函数obj = Bool (val) obj@logical (val)结束
MATLAB传递参数只有第一个超类成员。例如,假设Bool
来源于另一个类:
classdefBool <逻辑& MyBool枚举否(0)是(1)结束结束
的MyBool
类可以添加一些专门的行为:
classdefMyBool方法函数boolValues = testBools (obj)…结束结束结束
默认的Bool
构造函数的行为如果这样定义函数:
参数传递给第一个超类构造函数
没有参数传递给后续的构造函数
函数obj = Bool (val) obj@logical obj@MyBool (val)结束