带枚举的语句

when 可用于匹配 enum 值:

enum class Day {
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

fun doOnDay(day: Day) {
    when(day) {
        Day.Sunday ->     // Do something
        Day.Monday, Day.Tuesday ->     // Do other thing
        Day.Wednesday ->  // ...
        Day.Thursday ->   // ...
        Day.Friday ->     // ...
        Day.Saturday ->   // ...
    }
}

正如你在第二种情况下可以看到的那样(MondayTuedsay),也可以组合两个或更多 enum 值。

如果你的案例并非详尽无遗,则编译将显示错误。你可以使用 else 来处理默认情况:

fun doOnDay(day: Day) {
    when(day) {
        Day.Monday ->     // Work
        Day.Tuesday ->    // Work hard
        Day.Wednesday ->  // ...
        Day.Thursday ->   //
        Day.Friday ->     //
        else ->           // Party on weekend
    }
} 

尽管使用 if-then-else 构造可以做到同样的事情,但是 when 可以处理丢失的 enum 值并使其更自然。

点击此处查看有关 kotlin enum 的更多信息