You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中能否用is操作符配合内联变量声明简化空值检查代码?

Kotlin 简化空值检查与代码的方法

Kotlin 确实没有像 C# 那样直接在 if 条件里完成赋值+空值检查的语法,但可以通过标准库的扩展函数实现类似的简化效果,最常用的就是 let:

简化后的代码

rfid.readTagFromBuffer()?.let { tagInfo ->
    val msg = hnd.obtainMessage()
    msg.obj = tagInfo
    hnd.sendMessage(msg)
}

原理说明

  • ?. 是安全调用运算符:只有当 rfid.readTagFromBuffer() 返回非空值时,才会执行后面的 let 函数;如果返回 null,整个表达式直接跳过,不会执行 lambda 里的代码。
  • let 函数会把当前非空的对象作为参数传入 lambda 中(这里我们给参数起名 tagInfo,也可以直接用默认的 it),并且在 lambda 内部,这个参数会被智能转换为非空的 UHFTAGInfo 类型,不需要再手动判空。

更紧凑的可选写法

如果想进一步压缩代码,还可以结合 apply 简化消息创建逻辑:

rfid.readTagFromBuffer()?.let { tagInfo ->
    hnd.obtainMessage().apply { obj = tagInfo }.let(hnd::sendMessage)
}

内容的提问来源于stack exchange,提问作者Kamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:01:00