仅当不为空时才为变量赋值 - Kotlin

Assign value to variable only if is not null - Kotlin

Kotlin 中是否有一种简洁的方法来仅在值不为 null 时为变量赋值?

我的例子是:

if(x != null)
   y = x

我找到了类似

的解决方案
y = x? : return

但我不明白这是否符合我的要求以及这个运算符是如何工作的。

这个算子叫做猫王算子。它评估 x 是否不为空,如果为真,则将 x 分配给 y。如果它为 null,它会计算问号后面的语句,立即返回,因此 y 保持不变。

如果您还不想 return 从函数中退出,另一种解决方案:

x?.let{ y = it }

检查 x 是否为非空,然后将其作为唯一参数传递给 lambda 块。

如果您的 xvar

,这也是一个安全的调用

你的代码是完全一样的,但是写的更少:

if(x != null)
    y = x
else
    return

使用 Elvis 运算符时,它会将 if else 语句缩短为:

y=x ?: return

如果左边为真(x不为空)则y将被赋值,否则右边将被执行。

对于那些正在搜索并想要而非 立即return 的解决方案的人。你可以捂着鼻子这样做:

y = x ?: y

作为一名优秀的程序员,我不敢仅仅为了满足语法就将变量赋值给自身。但那是适合你的科特林!那些设计师什么都想到了!