OrEmpty 函数
orEmpty
是 Collection<T>?
类型和 List<T>?
类型的扩展函数,看看它的定义:
public inline fun <T> Collection<T>?.orEmpty(): Collection<T> = this ?: emptyList()
public inline fun <T> List<T>?.orEmpty(): List<T> = this ?: emptyList()
非常简单,该函数会判断该对象是否为空,以此决定返回原始对象或一个 emptyList。这在需要一个 NonNull 对象的时候比较有用。
合并两个List
在kotlin中,合并两个 List 可以直接使用加号连接:
val list1 = arrayListOf(1, 2, 3)
val list2 = arrayListOf("4", "5", "6")
val list3 = list1 + list2
println(list3)
[1, 2, 3, 4, 5, 6]
而对于 Nullable List,如:
val list1: ArrayList<Int>? = arrayListOf(1, 2, 3)
val list2: ArrayList<String>? = arrayListOf("4", "5", "6")
val list3 = list1 + list2
println(list3)
则会导致编译错误。
这时候,可以使用 orEmpty
函数来合并。
val list1: ArrayList<Int>? = arrayListOf(1, 2, 3)
val list2: ArrayList<String>? = arrayListOf("4", "5", "6")
val list3 = list1.orEmpty() + list2.orEmpty()
println(list3)
[1, 2, 3, 4, 5, 6]
非常简单。
网友评论