主要内容

从内置类派生的枚举

子类化内置类

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

相关的话题