如何在Kotlin中定义非顺序枚举?
我想定义一个值不是序号的枚举,例如:如何在Kotlin中定义非顺序枚举?,kotlin,enums,Kotlin,Enums,我想定义一个值不是序号的枚举,例如: enum class States(value: Int) { STATE_A(4), STATE_B(5), STATE_C(7), STATE_D(12) } 如何获得每个项目的价值?例如States.STATE_C应该返回7您应该将值定义为属性(val),而不是构造函数参数。之后,可以访问: enum class States(val value: Int) { STATE_A(1), STATE_B(
enum class States(value: Int) {
STATE_A(4),
STATE_B(5),
STATE_C(7),
STATE_D(12)
}
如何获得每个项目的价值?例如States.STATE_C应该返回7您应该将
值定义为属性(val
),而不是构造函数参数。之后,可以访问:
enum class States(val value: Int) {
STATE_A(1),
STATE_B(2),
STATE_C(3),
STATE_D(4)
}
...
println(States.STATE_C.value) // prints 3
也考虑使用<代码>序号,这可能适用于你的情况:
enum class States {
STATE_A,
STATE_B,
STATE_C,
STATE_D
}
...
println(States.STATE_C.ordinal + 1) // prints 3
如果你采用这种方法,请小心-对状态的任何更改
顺序都可能会破坏你的代码。Hi@hluhovskyi,那么,从技术上讲,顺序索引将基于1吗?Enum的顺序是基于零的:为什么不从0开始呢?有许多情况下,你需要从0以外的其他位置开始。