当前位置: 首页 > news >正文

Kotlin when 用法完整分享

背景

when 是 Kotlin 中功能非常强大的条件表达式,可以看作是 switch 的升级版。它有两种主要用法:带参数不带参数。理解这两种用法及其适用场景,有助于写出更简洁、更易读的代码。


一、带参数的 when

基本语法

when (variable) {value1 -> action1()value2 -> action2()else -> defaultAction()
}

示例

// 判断具体值
when (status) {"success" -> println("成功")"error" -> println("错误")"loading" -> println("加载中")else -> println("未知状态")
}// 判断类型
when (response) {is Success -> handleSuccess(response)is Error -> handleError(response)is Loading -> showLoading()
}// 多值匹配
when (code) {200, 201 -> println("请求成功")404 -> println("未找到")500 -> println("服务器错误")else -> println("其他状态码: $code")
}

特点

  • 适合对同一个变量进行多分支判断。

  • 支持类型判断与多值匹配。

  • 可读性好,类似 Java 的 switch,但更灵活。


二、不带参数的 when

基本语法

when {condition1 -> action1()condition2 -> action2()else -> defaultAction()
}

示例

// 判断不同条件
when {response == null -> handleNull()response.isSuccess() -> handleSuccess()else -> handleFailure()
}// 复杂条件组合
fun shouldShowPromotion(user: User?): Boolean = when {user == null -> falseuser.isVip -> falseuser.signInDays > 7 -> trueuser.purchaseCount == 0 -> trueelse -> false
}// UI 显示逻辑
fun getViewVisibility(): Int = when {isLoading -> View.GONEdata.isNullOrEmpty() -> View.GONEhasError -> View.VISIBLEelse -> View.VISIBLE
}

特点

  • 不依赖单一变量。

  • 更灵活,可以混合不同条件。

  • 常用于多条件判断和复杂逻辑表达。


三、对比总结

特性带参数 when(x)不带参数 when { }
适用场景判断同一变量的不同值判断多个独立条件
可读性针对单一变量更清晰更灵活,但条件过多易复杂化
常见用例状态码、枚举、类型匹配null 检查、UI 状态控制、业务逻辑

四、最佳实践

  • 单一变量多分支:优先用带参数的 when(x),更简洁直观。

  • 多条件组合判断:使用不带参数的 when {},避免嵌套 if-else

  • 覆盖所有情况:尽量包含 else 分支,确保健壮性(除非编译器可确定已覆盖所有情况)。


总结

👉 when(x):用于同一个变量的多种取值(如枚举、状态码)。
👉 when {}:用于多个条件的判断(如逻辑组合、状态切换)。

http://www.dtcms.com/a/458569.html

相关文章:

  • 巩义网站建设汕头市网络推广报价
  • 有哪些网站建设工作推广文案怎么写
  • 深圳宝安建网站动漫制作专业要多少分
  • Python爬虫优化实战:高效稳定爬图技巧
  • wordpress网站更新合水网站建设
  • 获取印度尼西亚股票数据API完全指南
  • 深圳建设网官方网站wordpress官方模板
  • 北京代理记账公司电话山西seo优化公司
  • 2025年免费网盘实用指南
  • fpga实现灰度质心法求取质心
  • 深圳微网站开发佛山制作网站企业
  • 网站制作流程论文wdcp设置网站安全
  • 深入解析 Spec Kit 工作流:基于 GitHub 的 Spec-Driven Development 实践
  • ArrayList - 如何实现数组和List之间的转换
  • 江淮网站开发邮件订阅 wordpress
  • 用html做网站源代码wordpress表单数据前台显示图片
  • 贵州省网站集约化建设青岛黄岛网站建设公司电话
  • 申请免费网站需要什么条件许昌网页制作
  • 济南环保行业网站开发群晖wordpress安装主题下载失败
  • 宁波建网站哪家好用点企业vi设计公司报价
  • YOLO入门教程(番外):YOLOv3创新思想及整体架构
  • 软件需求表文档与软件开发设计方案:核心区别及阶段归属解析
  • vue.js合作做网站么买了网站主机后如何建设网站
  • 三亚建设网站手机网站建设教材
  • IMX6ULL学习笔记_Boot和裸机篇(5)--- IMX6ULL使用ECSPI3驱动Flash启动程序
  • 传输层:TCP协议
  • 网站团购功能怎么做wordpress的模板制作
  • 做一个企业网站要多久怎么弄网站关键词
  • 1、简介Python
  • 门头设计网站推荐wordpress 整站播放器