在 C 中枚举都是数字,您可以仅通过名称引用该值。
例子:
#include <stdio.h>
enum week { sunday, monday, tuesday, wednesday, thursday, friday, saturday };
int main()
{
enum week today;
today = wednesday;
printf("Day %d",today+1);
return 0;
}
输出:第 4 天
在 Kotlin 中,我想要类似的东西,至少能够摆脱
.ordinal
。目前是这样的:
enum class Week { sunday, monday, tuesday, wednesday, thursday, friday, saturday }
并访问一个元素,我必须使用详细的
Week.monday.ordinal
最佳答案
基本上 @jrtapsell 的回答很棒而且很完整。但同样在 kotlin 中,您可以覆盖 invoke() 运算符。
enum class Weekday { MONDAY, TUESDAY;
operator fun invoke(): Int {
return ordinal
}
}
fun main(args: Array<String>) {
print("${Weekday.TUESDAY() + 1}")
}
结果:2
AFM 更漂亮。
关于enums - 是否可以在 kotlin 中使用 enum ordinal 而不显式调用 ordinal?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49858787/