为什么 Kotlin 中一个 not null 变量可以加上一个 null 值?

Hel*_*oCW 0 kotlin

下面的代码可以在Android Studio中编译。

我很奇怪为什么非空变量可以加上空值。

1:你知道val smaybe null和 var userDatais not null,为什么是 userData = userData + s正确的?

2:结果是什么 userData = userData + null?App运行时会崩溃吗?

 var userData: String by remember { mutableStateOf("OK") }
 userData = userData + null

 val s = it.message?.content     
 userData = userData + s
Run Code Online (Sandbox Code Playgroud)

Con*_*uin 5

我们来看下面两个例子:

  1. val a = "a" + null // a is String "anull"
  2. val b = null + "b" // b is String "nullb"

要了解正在发生的情况,我们需要了解+每种情况下的工作原理。

在情况 1 中:使用的运算符是operator fun String.plus(other: Any?): String( this )

返回通过将此字符串与给定其他对象的字符串表示形式连接而获得的字符串。

的“字符串表示形式”null是 string "null"。因此,这只是连接两个字符串"a""null"

在情况 2 中:使用的运算符是operator fun String?.plus(other: Any?): String( this )

将此字符串与给定其他对象的字符串表示形式连接起来。如果接收者或其他对象为空,则它们表示为字符串“null”。

因此,类似地,这相当于连接字符串"null""b"