gpt4 book ai didi

kotlin - 如果Elvis运算符的两个表达式都为null,那么选择哪个?

转载 作者:行者123 更新时间:2023-12-02 13:09:20 26 4
gpt4 key购买 nike

例如:

var str: String? = null
str ?: null

何时运行返回null,但是哪个返回?我没有预见到任何实际的目的-我很好奇。

最佳答案

您正在寻找的答案是右侧值,这正是我们所期望的。他们两个都是空的事实与他们评估的顺序无关,Kotlin有契约(Contract)并且坚持下去。

如果在编辑器中键入您的代码,则会收到一条警告:“如果为elvis运算符(?:),则它的空操作数为null时将是无用的”,这对我来说似乎是正确的。为了解决这个问题,让我们用返回null的函数代替左侧和右侧...

fun alwaysReturnsNull(log: String): String? {
println(log)
return null
}

val str: String? = alwaysReturnsNull("first") ?: alwaysReturnsNull("second")
println(str)

在这种情况下,输出为“first”,然后为“second”,表明Kotlin正在按您期望的顺序评估这些函数值:elvis的左手,然后elvis的右手。

关于kotlin - 如果Elvis运算符的两个表达式都为null,那么选择哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50300287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com