Kotlin 中是否有一种干净的方法,仅在值不为 null 时才为变量赋值?
我的例子是:
if(x != null)
y = x
我找到了这样的解决方案
y = x? : return
但我不明白这是否符合我的意愿以及该运算符的工作原理。
如果您还不想从函数返回,则另一种解决方案:
x?.let{ y = it }
它会检查x
是否为非空,然后将其作为唯一的参数传递给 lambda 块。
如果您的x
是var
,这也是一个安全的电话。
运算符称为 Elvis 运算符。它评估x
是否不为 null,如果为 true,则将x
分配给y
。如果为 null,它将计算问号后面的语句,立即返回,因此y
保持不变。
对于那些搜索并想要一个不会立即返回的解决方案的人。 你可以捏着鼻子做这件事:
y = x ?: y
作为一个优秀的程序员,我不寒而栗地为自己分配一个变量来满足语法。 但那是你的 kotlin! 那些设计师想到了一切!
您的代码完全相同,但编写的内容较少:
if(x != null)
y = x
else
return
使用 Elvis 运算符时,它将 if else 语句缩短为:
y=x ?: return
如果左侧为真(x 不为空(,则将分配 y,否则将执行右侧。