只有当值不为空时,Kotlin中有一种干净的方法可以为变量赋值吗?
示例是:
if(x != null)
y = x
我找到了像
这样的解决方案y = x? : return
但我无法理解这是否符合我的要求以及此操作符的工作原理。
答案 0 :(得分:23)
另一种解决方案,如果你还不想从函数返回:
x?.let{ y = it }
检查x
是否为非null,然后将其作为lambda块的唯一参数传递。
如果您的x
是var
。
答案 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,否则将执行右侧。