Kotlin中检查多个可空变量是否有更优实现方式?
Kotlin多可空变量非空执行的更优实现方式
针对多个可空变量需同时非空才执行代码的场景,有几种比嵌套?.let更清爽的实现方式:
直接
if判断(首选方案)
你给出的if (v1 != null && v2 != null)写法本身就是最优解之一——逻辑直白、可读性强,没有多余的lambda嵌套,维护成本极低,日常开发中绝大多数场景都优先用这种写法。run函数+提前返回(适配多变量场景)
如果需要处理3个及以上的可空变量,嵌套let会越来越臃肿,这时可以用run配合?: return@run来逐个处理空判断,把所有非空变量拉进同一个作用域:run { val value1 = v1 ?: return@run val value2 = v2 ?: return@run val value3 = v3 ?: return@run doSomething(value1, value2, value3) }这种写法每个变量的空判断独立,结构清晰,比多层嵌套
let好维护。解构声明配合空判断(适合2-3个变量)
可以先通过空判断确认所有变量非空,再用解构声明简化参数传递:if (v1 != null && v2 != null) { val (value1, value2) = v1 to v2 doSomething(value1, value2) }这种写法在变量有语义化命名需求时会更清晰,不过本质还是基于
if判断的扩展。
需要注意的是,嵌套?.let虽然能实现功能,但多层嵌套会让代码的纵向深度增加,可读性下降,除非是链式调用的场景,否则不推荐。
内容的提问来源于stack exchange,提问作者lannyf
相关产品推荐
相关产品推荐

