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

Kotlin中Elvis运算符使用疑问:为何代码未按预期输出?

为什么这段Kotlin代码没有输出预期的"Bonjour"?

先看你给出的代码:

fun main()
{

    var a:String? = null
    var b:String? = "Hello"

    var result1 = a?:"Gracias"
    var result2 = b?:"Bonjour"
    println(result2)
}

问题出在Kotlin的**Elvis操作符(?:)**的逻辑上:

  • 这个操作符的作用是:当左侧的可空变量不为null时,直接返回变量的值;只有当变量为null时,才返回右侧的默认值。
  • 你的代码里,变量b被明确赋值为"Hello",它不是null,所以b?:"Bonjour"会直接取b的值"Hello",而不会用到右侧的"Bonjour"。
  • 最终println(result2)输出的就是"Hello",而非你预期的"Bonjour"。

如果想让代码输出"Bonjour",你需要把b的值设为null,比如:

var b:String? = null

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:01