在 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/

10-10 18:25
查看更多