我想使用枚举来访问数组或字典的元素,但没有运气。
枚举:
classdef Enumeration1 < uint32
enumeration
Left (1);
Right (2);
Neither (3);
end
end
用法:
directions(Enumeration1.Left) = 7;
对我来说这应该和
directions(1) = 7;
但我得到了‘下标索引必须是实正整数或逻辑数’。
或者,当我使用
containers.Map
对象时,我看到的所有示例都将键作为字符串当我使用枚举时,我得到“指定的密钥类型与此容器所需的类型不匹配”从help containers.Map
可以看出uint32是一种可接受的密钥类型。如何使用枚举值有效地索引对象?
最佳答案
如果您查看http://www.mathworks.com/help/matlab/matlab_oop/enumerations.html中给出的示例,您将看到Enumeration1.Left
的值不是值1
,而是一个对象您可以通过检查返回的对象来确认这一点:
a = Enumeration1.Left;
whos a
display(a)
这表明
a
是类Enumeration1
的一个对象,具有大小108 bytes
和值Left
将Left
转换为1
是通过b = uint32(a);
因此,以下方法应该有效:
directions(uint32(Enumeration1.Left)) = 7;
有趣的是-当我使用Matlab2012a时,我可以使用上面的语法,Matlab不会抱怨。