Sobes.tech
Junior — Middle

È possibile usare l'operatore when per gestire non tutte le sottoclassi di una classe sealed?

sobes.tech AI

Risposta dell'AI

В Kotlin, если у вас есть sealed класс, оператор when при проверке всех его подклассов может использоваться без ветки else, так как компилятор знает все возможные варианты. Однако, если вы не обрабатываете все подклассы sealed класса в when, то компилятор потребует добавить ветку else для обработки пропущенных случаев.

То есть, можно использовать when для обработки не всех подклассов, но тогда обязательно нужна ветка else.

Пример:

sealed class Result {
    class Success(val data: String) : Result()
    class Error(val error: Throwable) : Result()
}

fun handle(result: Result) {
    when (result) {
        is Result.Success -> println("Success: ${result.data}")
        else -> println("Что-то другое") // обязательно, если не все подклассы обработаны
    }
}

Если же обработать все подклассы, else не нужен.