Kotlin中的When表达式:灵活、强大且直观的条件控制工具

在Kotlin编程语言中,when表达式是一种功能强大的条件控制结构,它提供了比传统的 if...else if...else 语句更为简洁和灵活的方式来处理多种情况。通过以下示例代码,我们将深入探讨Kotlin when 表达式的使用及其多功能性。

首先,让我们从两个不同的 getScore 函数入手:

kotlin 复制代码
fun getScore(name: String) = when (name) {
    "Tom" -> 86
    "Jim" -> 77
    "Jack" -> 95
    "Lily" -> 100
    else -> 0
}

fun getScore2(name: String) = when {
    name.startsWith("Tom") -> 86
    name == "Jim" -> 77
    name == "Jack" -> 95
    name == "Lily" -> 100
    else -> 0
}

在上述代码中,when 表达式被用来根据传入的名字返回一个分数。getScore 函数直接比较字符串 name 与各个常量值,当找到匹配项时,则返回对应的分数。getScore2 函数则展示了 when 表达式的另一个特性------它可以包含复杂的布尔表达式作为分支条件。在这个例子中,我们检查输入的名字是否以特定字符串开头来决定分数。

值得注意的是,when 在这里作为一个表达式使用,因此可以直接将其赋值给函数的返回值。同时,最后的 else 分支是可选的,但通常用于提供默认行为或捕获未匹配的所有其他情况。

接下来,我们看一个针对数字类型的 checkNumber 函数:

kotlin 复制代码
fun checkNumber(num: Number) {
    when (num) {
        is Int -> println("Int")
        is Double -> println("Double")
        else -> println("Number is not supported")
    }
}

在这个场景中,when 表达式用于类型检查并据此执行相应的动作。每个分支前面的 is 关键字用于检测 num 是否属于某种特定类型。当 num 是 Int 类型时,输出 "Int";如果是 Double 类型,则输出 "Double";若都不是,则执行 else 分支的代码,表示不支持的数字类型。

总结起来,Kotlin 的 when 表达式具有以下特点:

  • 可以替代多个 if 和 else if 条件判断,使得代码更清晰。
  • 支持多种类型的条件测试,包括常量值、范围、模式匹配以及类型检查等。
  • 当 when 用作表达式时,它可以返回一个值,无需显式的 return 语句。
  • 具有简化的语法,可以省略括号,并且不需要关键字如 case 或 break,因为每个分支后面跟着箭头(->)即可指示要执行的代码块。

综上所述,Kotlin 的 when 表达式是一个强大的工具,无论是在简单的枚举匹配还是复杂的状态判断中,都能有效地提升代码的可读性和编写效率。

相关推荐
2601_962885725 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
爱吃奥利奥_wen5 小时前
面向对象三板斧:封装、继承、多态,到底在“装“什么、“承“什么、“变“什么?
开发语言·经验分享·c#
我可能是个假开发5 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
WL学习笔记6 小时前
日期类(C++)
开发语言·c++·日期类实现
谢亮_vipxieliang7 小时前
Go map与结构体的正确使用
开发语言·golang·哈希算法
H.莓飛7 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
xxwl5857 小时前
数据结构知识点和代码实现总结(C语言实现)
c语言·开发语言·数据结构
传奇开心果编程10 小时前
【Compose Multiplatform 跨端开发学与练】第7课 平台适配与互操作
android·windows·学习·ui·ios·kotlin·composer
mmsx10 小时前
Android 地图数据链路:从 GDAL、KML 到多引擎适配
android·kotlin
code2cat10 小时前
Java进阶篇之AtomicMarkableReference:引用还在,标记已经改变
java·开发语言·cas·并发编程·逻辑删除