Используя оператор when
, невозможно исключить предложение else
в случае использования целых чисел, потому что компилятор не знает, что возвращать, если startRating
не находится в диапазоне 1..5. Вы можете, например, бросить IllegalStateException
, если значение не находится в требуемом диапазоне:
private fun starMapping(startRating: Int): String {
return when (startRating) {
1 -> "Perfect"
2 -> "Great"
3-> "Okay"
4-> "Bad"
5 -> "Terrible"
else -> throw IllegalStateException("Invalid rating param value")
}
}
Или вы можете сделать что-то вроде этого:
return when {
startRating <= 1 -> "Perfect"
startRating == 2 -> "Great"
startRating == 3 -> "Okay"
startRating == 4 -> "Bad"
else -> "Terrible"
}
Но else
пункт обязателен.