Kotlin 中 else if 与 if 表达式陷阱
相关概念:kotlin
Kotlin 里最容易让人掉坑的一类代码,不是语法报错,而是“看起来像 Java,结果语义边界其实不一样”。
坑在哪里
当 if 被当成表达式使用时,后面再接 ?.let { ... } 这类调用,很容易让人误以为整段 if / else if / else 都是同一个整体。
但真正需要警惕的是:
- Kotlin 的
if是表达式 else if本质上仍然可以理解为else后跟了另一个if- 后续链式调用绑定到哪里,取决于表达式边界
为什么这个坑特别像“看不出来”
因为从视觉上看,它很像熟悉的 if / else if / else 连续结构。
但一旦和表达式返回值、空安全调用、扩展函数链在一起,实际结合范围就可能跟直觉不一致。
写法
如果分支本质上是在做“多路选择”,优先考虑:
when- 或者显式加括号,把表达式边界圈清楚
结论
这个问题的重点不是“语法有没有 else if”,而是:
在 Kotlin 里,看到
if时要先问自己,它现在是语句,还是表达式。
一旦忘了这件事,后面连着 let、also、takeIf 这类调用时就很容易写出视觉正确、语义跑偏的代码。