文档

从内置类型派生的枚举

子类化内置类型

枚举类可以子类化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空布尔枚举。

相关的话题