Sobes.tech
Junior — Middle

Se poate folosi operatorul when pentru a trata nu toate subclasele unei clase sealed?

sobes.tech AI

Răspuns de la 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 не нужен.