渐进式编程课
Kotlin 目录
第 16 课2026.09.21

让加载失败也有明确文字。

第 16 课:sealed状态加入错误分支

  • 日期:2026-09-21
  • 课程序号:第 16 课
  • 知识点:sealed状态加入错误分支

用途或适用场景

让加载失败也有明确文字。

核心概念

在同一 sealed interface 增加 Error 数据类,并让 when 覆盖全部分支。

最小代码或操作示例

text
sealed interface State {
  data object Loading : State
  data class Ready(val count: Int) : State
  data class Error(val message: String) : State
}
fun label(state: State) = when (state) {
  State.Loading -> "加载中"
  is State.Ready -> "共 ${state.count} 节"
  is State.Error -> state.message
}

3~5 分钟练习

传入 State.Error("网络失败")。

参考答案

label 返回“网络失败”。

与上一课的联系

沿用第 15 课的 State.Loading、State.Ready 与 label 函数;本课只新增携带消息的 State.Error 分支;完成练习后下一课可为错误消息为空的情况提供默认文案。

时效校验

时效校验:2026-09-24(当前 Kotlin 2.4.20;data object 自 Kotlin 1.9 起稳定,密封层次与穷尽 when 未见废弃标记;本机 Kotlin 2.4.0 编译运行通过)。

官方参考