仅当值不为null时才将值赋给变量 - Kotlin

时间:2018-05-14 21:41:37

标签: null kotlin operators

只有当值不为空时,Kotlin中有一种干净的方法可以为变量赋值吗?

示例是:

if(x != null)
   y = x

我找到了像

这样的解决方案
y = x? : return

但我无法理解这是否符合我的要求以及此操作符的工作原理。

4 个答案:

答案 0 :(得分:23)

另一种解决方案,如果你还不想从函数返回:

x?.let{ y = it }

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

如果您的xvar

,这也是一个安全的电话

答案 1 :(得分:5)

对于那些搜索并想要一个不会立即返回的解决方案的人。你可以捏着鼻子这样做:

y = x ?: y

作为一名优秀的程序员,为了满足语法,我不敢为自己分配一个变量。但那是 kotlin 给你的!那些设计师什么都想!

答案 2 :(得分:3)

操作员称为猫王操作员。它评估x是否为空,如果为真,则将x分配给y。如果为null,则计算问号后的语句,立即返回,因此保持y不变。

答案 3 :(得分:1)

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

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

使用Elvis Operator时,它将if else语句缩短为:

y=x ?: return

如果左侧为true(x不为null),则将分配y,否则将执行右侧。