是否可以在 kotlin 中使用 enum ordinal 而不显式调用 ordinal?

use*_*535 4 enums kotlin

在 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;
}
Run Code Online (Sandbox Code Playgroud)

输出:第 4 天


在 Kotlin 中,我想要类似的东西,至少能够摆脱.ordinal.

目前是这样的:

enum class Week { sunday, monday, tuesday, wednesday, thursday, friday, saturday }
Run Code Online (Sandbox Code Playgroud)

并访问一个元素,我必须使用详细 Week.monday.ordinal

BAZ*_*TED 5

基本上@jrtapsell 的回答很棒而且很完整。但在 kotlin 中,您也可以覆盖invoke()运算符。

enum class Weekday { MONDAY, TUESDAY;

    operator fun invoke(): Int {
       return ordinal
    }
}

fun main(args: Array<String>) {
    print("${Weekday.TUESDAY() + 1}")
}
Run Code Online (Sandbox Code Playgroud)

结果:2

AFM 更漂亮。