Kotlin 每日学习(二)常见操作符

2018-05-24  本文已影响3人  youthcity

一、安全调用操作符 ?.

b?.length  // 当 `b`为 null值时,返回b;否者,返回 b.length

安全调用操作符,在链式调用中非常有用。官方例子:
如果一个员工 Bob 可能会(或者不会)分配给一个部门, 并且可能有另外一个员工是该部门的负责人,那么获取 Bob 所在部门负责人(如果有的话)的名字

bob?.department?.head?.name

任何一个属性为空,最后都会返回 null

二、Elvis 操作符 ?:

b?: -1  // 若b为非空,则返回b,否者返回 -1 

继续官方的例子

// 若 b 不为空,则取b.length, 否则返回 -1
val l: Int = if (b != null) b.length else -1

// 使用 ?: 操作符
val I:Int = b?.length ?: -1 

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

三、非空断言运算符 !!

非空断言运算符(!!)将任何值转换为非空类型,若该值为空则抛出异常(NPE异常,空指针异常)。

val b = 9!!
println(b)  // 9

四、安全的类型转换 as?

val a = true
val aInt: Int? = a as? Int   // null

val b = 9
val bInt: Int? = b as? Int // 9

当对目标进行类型转换时,若转换不成功,则会返回 null;否则,返回目标值。

五、过滤非空集合 filterNotNull

val nullableList: List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()  // [1, 2, 4]

六、is

检查某个对象是否符合给定类型

val a = "abc"
println(a is String)  // true

参考资料

上一篇 下一篇

猜你喜欢

热点阅读