渐进式编程课
Kotlin 目录
第 17 课2026.09.22

错误状态没有可读消息时,仍向用户展示明确文案。

第 17 课:空白错误消息使用默认文案

  • 日期:2026-09-22
  • 课程序号:第 17 课
  • 知识点:String.ifBlank

用途或适用场景

错误状态没有可读消息时,仍向用户展示明确文案。

核心概念

ifBlank { ... } 仅在字符串为空或全是空白字符时取备用文本;其他消息保持原样。

最小代码或操作示例

kotlin
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.ifBlank { "加载失败" }
}
fun main() = println(label(State.Error("  "))) // 加载失败

3~5 分钟练习

把错误消息改成“网络失败”,观察输出。

参考答案

输出“网络失败”,没有使用默认文案。

与上一课的联系

沿用第 16 课的 State 三分支与 label;本课只在 Error 分支增加 ifBlank 兜住空白消息;完成后下一课可单独判断当前状态是否是错误以显示重试入口。

时效校验

时效校验:2026-09-24(Kotlin 2.4 标准库 ifBlank 与 sealed 官方文档;ifBlank 自 Kotlin 1.3 可用,data object 需 Kotlin 1.9+,未见废弃标记)。

官方参考