Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Middle+
8
Пример применения sealed‑класса для описания разных состояний
Условие задачи
Продемонстрировать, как с помощью sealed‑класса можно моделировать набор возможных состояний объекта. Нужно показать объявление sealed‑класса и несколько его наследников, каждый из которых представляет отдельное состояние, а также пример использования в условном операторе when (или аналогичном) без необходимости добавлять else‑ветку, поскольку компилятор проверит покрытие всех вариантов.
sealed class UiState {
object Loading : UiState()
data class Success(val data: List<String>) : UiState()
data class Error(val cause: Throwable) : UiState()
}
fun render(state: UiState) {
when (state) {
is UiState.Loading -> println("Loading...")
is UiState.Success -> println("Data: ${state.data}")
is UiState.Error -> println("Error: ${state.cause.message}")
}
}
В примере показано, как sealed‑класс гарантирует исчерпывающий набор вариантов и упрощает работу с различными состояниями в коде.