- Kotlin编程实战:创建优雅、富于表现力和高性能的JVM与Android应用程序
- (美)文卡特·苏布拉马尼亚姆
- 446字
- 2025-02-27 12:54:48
6.2.6 使用when
任何能够减少混乱并使代码中的逻辑更易于遵循的努力都是值得的。在使用可空引用时,如果你希望根据引用中的值(包括null)执行不同的计算或采取不同的操作,那么请考虑使用when而不是?.或者?:(参见4.3节)。换句话说,使用安全调用或Elvis运算符来提取值,并使用when对可空的引用做出决策。
由于nickName()函数是根据可空引用中的值决定返回什么,而不仅仅是提取值,所以我们可以修改此函数:

与之前的代码不同,以下代码工作得很好:

在这段代码中,when用作一个表达式,它生成的值作为函数的结果返回。else子句在本例中是必需的,并且应该是最后一个。带有null的路径可能出现在else之上的任何地方。
因为我们有一个null检查,所以只有当引用不为null时,才会执行when中的所有其他路径。你知道这一点,编译器也知道。因此,在任何非空路径中,你不必执行null检查,也不必使用安全调用运算符或Elvis运算符。这真是太令人愉快了——更少的工作,更少的混乱。
Kotlin不仅在处理null时提供了安全性,还通过优雅的运算符减少了代码中的混乱。你还可以在执行类型检查和显式类型转换的特性中发现同样的优雅。