假设你有
public enum Week {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
怎么能int
代表星期日是0,星期三是3等?
Week week = Week.SUNDAY;
int i = week.ordinal();
但是请注意,如果您更改声明中的枚举常量的顺序,则此值将更改。解决此问题的一种方法是将int值自定义为所有枚举常量,如下所示:
public enum Week
{
SUNDAY(0),
MONDAY(1)
private static final Map<Integer,Week> lookup
= new HashMap<Integer,Week>();
static {
for(Week w : EnumSet.allOf(Week.class))
lookup.put(w.getCode(), w);
}
private int code;
private Week(int code) {
this.code = code;
}
public int getCode() { return code; }
public static Week get(int code) {
return lookup.get(code);
}
}
问题内容: 如何确定Swift枚举中的个案数? (我想避免手动枚举所有值,或者尽可能避免使用旧的“enum_count技巧”。) 问题答案: 从Swift 4.2(Xcode 10)开始,您可以声明符合协议,这适用于所有没有关联值的枚举: 现在可以简单地通过 有关更多信息,请参见 SE-0194枚举案例的派生集合
是否有一种内置的方法来获取Enum的项目数,例如, 或者我必须根据元素的数量实现一个函数?
我有枚举
问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S
问题内容: 假设是,我将如何产生给定序数的枚举值? 问题答案: 足够了。一条线; 足够简单。