when can be used to match enum values:
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 -> // ...
}
}
As you can see in second case line (Monday and Tuedsay) it is also possible to combine two or more enum values.
If your cases are not exhaustive the compile will show an error. You can use else to handle default cases:
fun doOnDay(day: Day) {
when(day) {
Day.Monday -> // Work
Day.Tuesday -> // Work hard
Day.Wednesday -> // ...
Day.Thursday -> //
Day.Friday -> //
else -> // Party on weekend
}
}
Though the same can be done using if-then-else construct, when takes care of missing enum values and makes it more natural.
Check here for more information about kotlin enum