android学习

Kotlin中的? 、?. 、?: 、!!、as?

2020-10-24  本文已影响0人  335a40e49285

1. ?

声明一个变量可为空。

var b: String? = "abc" // 可以设置为空

2. ?.

判空操作
2.1

val a = "Kotlin"
val b: String? = null
println(b?.length)
println(a?.length) // 无需安全调用

如果 b 为空,返回 null,否则就返回 b.length。
2.2
如果要只对非空值执行某个操作,安全调用操作符可以与let 、run等一起使用:

val listWithNulls: List<String?> = listOf("Kotlin", null)
for (item in listWithNulls) {
    item?.let { println(it) } // 输出 Kotlin 并忽略 null
}

3. ?:

Elvis操作符。
如果 ?: 左侧表达式为空,则返回右侧表达式,否则返回左侧表达式。 请注意,当且仅当左侧为空时,才会对右侧表达式求值。

val l = b?.length ?: -1

4. !!

非空断言运算符。若值为空则抛出异常。

val l = b!!.length

我们可以写 b!! ,这会返回一个非空的 b 值 (例如:在我们例子中的 String)或者如果 b 为空,就会抛出一个 NPE 异常。

5. as?

安全的类型转换,如果尝试转换不成功则返回 null:

val aInt: Int? = a as? Int

官方文档:

https://www.kotlincn.net/docs/reference/null-safety.html

上一篇下一篇

猜你喜欢

热点阅读