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

当Elvis运算符的两个表达式均为null时,会返回哪一个?

关于Kotlin中str ?: null返回哪个null的解答

哈哈,这个问题确实有点“钻牛角尖”但挺有意思的!咱们来一步步理清楚:

首先得回忆Kotlin里Elvis运算符(?:)的核心逻辑:它是个短路求值的运算符——先计算左边的表达式,如果结果不为null,直接返回左边的值;只有当左边是null时,才会去计算右边的表达式,然后返回右边的结果。

回到你的代码:

var str: String? = null 
str ?: null 

第一步,str被赋值为null;第二步执行str ?: null时,左边的str是null,所以触发了Elvis运算符的右侧分支,程序会计算右边的null字面量,然后返回这个null。

当然,从值的本质上来说,Kotlin里的null在JVM层面其实是同一个空引用,所以不管是左边变量的null还是右边字面量的null,实际运行时的标识是一样的。但从代码执行流程的角度,返回的确实是Elvis运算符右侧的那个null。

虽然这个场景完全没有实际业务价值,但能帮你更透彻理解Elvis运算符的执行规则,这种好奇心还是值得鼓励的😉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:22:01