如何在Haxe中迭代枚举?

15

我有一个枚举类型:

enum PlayerProps {
    Attempts;
    Gold;
    Diamonds;
}

我应该怎么做才能遍历枚举类型的所有值?就像这样:

var props = new Map<PlayerProps, Int>();
for (prop in PlayerProps)
    props[prop] = 0;
1个回答

19

谢谢,我稍后也找到了allEnums。但现在我已经学到了Map不能使用枚举类型作为键... - meps
抱歉我没有测试那个,我认为你可以通过使用枚举的int值来找到解决方法(它应该可以被某种方式访问),但我猜这不是最好的解决方案。 你考虑过创建一个对象而不是一个映射吗?你可以定义一个类,为每个属性定义一个字段(这可能适用于你的需求,也可能不适用)。 - npretto
我正在尝试使用IntMap和Type.enumIndex方法进行解决。但是这看起来非常笨重。 - meps
4
@meps提到地图中应该支持枚举类型,可以使用haxe.ds.EnumValueMap。如果遇到问题,请尝试将其类型定义为var mProps:EnumValueMap<PlayerProps,Int> = new EnumValueMap(),看看是否有所不同... - Jason O'Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接