仅当不为空时才为变量赋值 - 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 块。
如果您的 x
是 var
。
,这也是一个安全的调用
你的代码是完全一样的,但是写的更少:
if(x != null)
y = x
else
return
使用 Elvis 运算符时,它会将 if else 语句缩短为:
y=x ?: return
如果左边为真(x不为空)则y将被赋值,否则右边将被执行。
对于那些正在搜索并想要而非 立即return 的解决方案的人。你可以捂着鼻子这样做:
y = x ?: y
作为一名优秀的程序员,我不敢仅仅为了满足语法就将变量赋值给自身。但那是适合你的科特林!那些设计师什么都想到了!
Kotlin 中是否有一种简洁的方法来仅在值不为 null 时为变量赋值?
我的例子是:
if(x != null)
y = x
我找到了类似
的解决方案y = x? : return
但我不明白这是否符合我的要求以及这个运算符是如何工作的。
这个算子叫做猫王算子。它评估 x
是否不为空,如果为真,则将 x
分配给 y
。如果它为 null,它会计算问号后面的语句,立即返回,因此 y
保持不变。
如果您还不想 return 从函数中退出,另一种解决方案:
x?.let{ y = it }
检查 x
是否为非空,然后将其作为唯一参数传递给 lambda 块。
如果您的 x
是 var
。
你的代码是完全一样的,但是写的更少:
if(x != null)
y = x
else
return
使用 Elvis 运算符时,它会将 if else 语句缩短为:
y=x ?: return
如果左边为真(x不为空)则y将被赋值,否则右边将被执行。
对于那些正在搜索并想要而非 立即return 的解决方案的人。你可以捂着鼻子这样做:
y = x ?: y
作为一名优秀的程序员,我不敢仅仅为了满足语法就将变量赋值给自身。但那是适合你的科特林!那些设计师什么都想到了!