枚举类可以子类化MATLAB®内置类。从内置类派生枚举类有助于扩展枚举成员的用处。
枚举继承内置类的功能。
可以将数字或逻辑值与枚举成员关联。
有关枚举类的更基本讨论,请参见定义枚举类.
请注意
从内置数值类和逻辑类派生的枚举类不能定义属性。
如果一个枚举类派生了一个内置的数字类,那么该子类继承了可以应用于枚举名称的排序和算术操作。
例如,结果
类的子类int32
内置类。这个类将一个整数值与四个枚举成员中的每一个关联-第一个
,第二个
,第三
,NoPoints
.
classdef结果< int32枚举第一(100)第二(50)第三(10)无位置(0)结束结束
枚举成员继承int32
类(冒号操作符除外)。将这些枚举像数值一样使用(求和、排序、平均)。
isa(结果。第二,“int32”)
ans = 1
例如,使用枚举名而不是数字对两个团队进行排名:
Team1 =[结果。首先,结果。没有Place, Results.Third, Results.Second]; Team2 = [Results.Second, Results.Third, Results.First, Results.First];
执行int32
操作这些结果
枚举:
总和(Team1)
ans = 160
意思是(Team1)
ans = 40
排序(Team2“下”)
第一,第一,第二,第三
Team1 > Team2
Ans = 1 0 0 0
总和(Team1) <总和(Team2)
ans = 1
当您第一次引用从内置类派生的枚举类时,例如,int32
, MATLAB将与枚举成员关联的输入参数传递给超类构造函数。例如,引用第二个
结果
成员,定义为:
第二(50)
意味着MATLAB调用:
int32 (50)
初始化int32
的方面结果
对象。
从MATLAB内置数字和逻辑类派生的枚举类可以为基础值定义多个名称。具有给定基础值的枚举块中的第一个名称是该基础值的实际名称,随后的名称是别名。
使用与实际名称相同的父类构造函数参数指定别名:
classdefBool <逻辑枚举否(0)是(1)off (0) on (1)结束结束
的实例的实际名称Bool.off
枚举成员是没有
:
一个=保龄球。没有
=没有
b = Bool.off
b =没有
与枚举成员关联的实际基础值是内置超类返回的值。例如,考虑保龄球
用类的构造函数参数定义的类双
:
classdefBool <逻辑枚举否(0)是(100)结束结束
这个类派生于内置的逻辑
类。因此,枚举成员的基础值仅取决于什么值逻辑
当传入该值时返回:
一个=保龄球。是的
=是的
逻辑(一个)
ans = 1
的流量
枚举类定义了三个成员,低
,媒介
,高
.
classdef流量< int32枚举低(10)中(50)高(100)结束结束
引用枚举成员的实例:
setFlow = FlowRate.Medium;
该语句导致MATLAB使用参数值调用默认构造函数50
.MATLAB将此参数传递给第一个超类构造函数(int32 (50)
在这种情况下)。结果是一个潜在的价值50
的32位整数流量。媒介
成员。
因为流量
内建数值类的子类(int32
),该类不能定义属性。然而流量
继承了int32
方法,包括转换器方法。程序可以使用转换器来获取底层值:
setFlow = FlowRate.Medium;int32 (setFlow)
ans = 50
如果枚举是内置数值类的子类,则可以使用枚举类的名称将内置数值数据转换为枚举。例如:
一个= Bool (1)
=是的
枚举类也接受自己类的枚举成员作为输入参数:
Bool (a)
ans = Yes
转换器返回与input相同大小的对象:
Bool ([0, 1])
是
属性创建空枚举数组空
静态方法:
Bool.empty
ans = 0x0空布尔枚举。