我创建了自己的类来充当枚举类型。我已经覆盖了 disp() 方法,因此当包含该类型的变量显示在命令行窗口中时,它会显示一些有意义的内容(特别是该枚举值的名称。)
classdef MyEnumeratedType
properties(Constant)
ENUMVAL1 = MyEnumeratedType(1, 'ENUMVAl1');
ENUMVAL2 = MyEnumeratedType(2, 'ENUMVAL2');
ENUMVAL3 = MyEnumeratedType(3, 'ENUMVAL3');
end
properties(Access=private)
ordinal
name
end
methods(Access=private)
function this = MyEnumeratedType(ord, name)
this.ordinal = ord;
this.name = name;
end
end
methods
function disp( this )
disp(this.name);
end
end
end
因此,当我将它分配给命令窗口中的变量时,我得到了所需的输出:
>> x = MyEnumeratedType.ENUMVAL2
x =
ENUMVAL2
到目前为止,一切都很好。但是当我将 MyEnumeratedType 类型的值分配给结构的字段时,该结构的显示不会显示该值,而只会告诉我我有一个 MyEnumeratedType 类型的值。
>> mystruct.field1 = 42
mystruct =
field1: 42
>> mystruct.field2 = MyEnumeratedType.ENUMVAL3
mystruct =
field1: 42
field2: [1x1 MyEnumeratedType]
如何让 field2 的值像 field1 中的双精度值一样显示?