gpt4 book ai didi

kotlin - 问:检查Kotlin中变量是否为null的惯用方式

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

假设我有这样的Kotlin代码:

val var1:String? = isVar1Present() 
val var2:String? = isVar2Present()
val var3:String? = isVar3Present()


if ((var1!=null)||(var2!=null)||(var3!=null)) {
//do something complex only if at least one of var is not null and do it only one time
}
如何在Kotlin中使其更具意识形态性?如果它是一个var-这将是简单的 var1?.let { ... } ,但我这里有3个。
我也想过
    if (listOf(var1, var2, var3)
.filterNotNull()
.isNotEmpty( ) {
//do something complex
}
但它看起来很疯狂(但很短,尤其是在真实代码中不是 isVarNPresent而是很长的行,例如 isVar1Present=varmanager.getStatusOfVar(varmanager.var1)(因此,上面的示例将使用其他映射步骤)

最佳答案

有一个略短的版本:

if (var1 ?: var2 ?: var3 != null) { … }
(这是有效的,因为 var1 ?: var2 ?: var3给出找到的第一个非null值,或者仅在所有三个变量都为null时才为null。)
这要短一些,并且可以说是惯用的,但不那么明显,特别是对于非 Kotlin 专家而言。根据可能阅读代码的人,可能值得坚持使用更简单,更易于理解的版本(如Animesh所建议的,删除括号):
if (var1 != null || var2 != null || var3 != null) { … }
或者,如果需要在块内使用第一个非空值,则可以使用:
(var1 ?: var2 ?: var3)?.let { … }
在这种情况下,习惯用法较少的替代方案将更长,因此该构造更加合理。

关于kotlin - 问:检查Kotlin中变量是否为null的惯用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63216343/

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