从内置类型派生的枚举
子类化内置类型
枚举类可以子类化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
sum(Team1) < sum(Team2)
Ans = 1
如何创建枚举实例
当您首次引用从内置类派生的枚举类时,例如,int32
, MATLAB将与枚举成员关联的输入参数传递给超类构造函数。例如,引用第二个
结果
成员,定义为:
第二(50)
表示MATLAB调用:
int32 (50)
初始化int32
这方面结果
对象。
如何别名枚举名称
从MATLAB内置数值和逻辑类派生的枚举类可以为底层值定义多个名称。具有给定基础值的枚举块中的第一个名称是该基础值的实际名称,后面的名称是别名。
使用与实际名称相同的超类构造函数参数指定别名:
classdefBool < logical枚举No (0) Yes (1) off (0) on (1)结束结束
的实例的实际名称Bool.off
枚举成员为没有
:
a = Bool。没有
a =否
b =取消
b =否
超类构造函数返回底层值
与枚举成员关联的实际基础值是内置超类返回的值。例如,考虑保龄球
用类的构造函数参数定义的类双
:
classdefBool < logical枚举否(0)是(100)结束结束
这个类派生自内置的逻辑
类。因此,枚举成员的基础值仅取决于值是什么逻辑
当传递该值时返回:
a = Bool。是的
a =是
逻辑(一个)
Ans = 1
如何子类化数字内置类
的流量
枚举类定义三个成员,低
,媒介
,高
。
classdefFlowRate < int32枚举低(10)中(50)高(100)结束结束
引用枚举成员的实例:
setFlow = FlowRate.Medium;
该语句导致MATLAB调用带有参数值的默认构造函数50
。MATLAB将此参数传递给第一个超类构造函数(int32 (50)
在这种情况下)。结果是一个潜在的值50
的32位整数流量。媒介
成员。
因为流量
内置数值类的子类(int32
),这个类不能定义属性。然而流量
继承了int32
方法,包括转换器方法。程序可以使用转换器来获得底层值:
setFlow = FlowRate.Medium;int32 (setFlow)
Ans = 50
默认的转换器
如果枚举是内置数字类的子类,则可以使用枚举类的名称将内置数字数据转换为枚举。例如:
a = Bool(1)
a =是
枚举类也接受自己类的枚举成员作为输入参数:
Bool (a)
ans =是
转换器返回一个与input相同大小的对象:
Bool ([0, 1])
ans =否是
类创建一个空枚举数组空
静态方法:
Bool.empty
ans = 0x0空布尔枚举。