我想使用枚举来访问数组或字典的元素,但没有运气。
枚举:

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和值LeftLeft转换为1是通过
b = uint32(a);

因此,以下方法应该有效:
directions(uint32(Enumeration1.Left)) = 7;

有趣的是-当我使用Matlab2012a时,我可以使用上面的语法,Matlab不会抱怨。

10-01 21:29
查看更多