Kotlin List 防止崩溃取值方式:getOrElse()

2021-09-22  本文已影响0人  wuchao226
public inline fun <T> List<T>.getOrElse(index: Int, defaultValue: (Int) -> T): T {
    return if (index >= 0 && index <= lastIndex) get(index) else defaultValue(index)
}

/**
 * Returns an element at the given [index] or `null` if the [index] is out of bounds of this list.
 */
public fun <T> List<T>.getOrNull(index: Int): T? {
    return if (index >= 0 && index <= lastIndex) get(index) else null
}

示例

fun main() {
    val list = listOf("zhangsan", "lisi", "wangwu")
    // 普通取值方式,索引 内部是运算符重载  [] == get
    println(list[0])
    println(list[1])
    println(list[2])
    // println(list[3]) // 崩溃 java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    println()

    // 防止崩溃取值方式:getOrElse() getOrNull()
    println(list.getOrElse(2) { "越界" })
    println(list.getOrElse(3243) { "你越界了" })

    println()

    println(list.getOrNull(2))
    println(list.getOrNull(3))
    // getOrNull + 空合并操作符
    println(list.getOrNull(43) ?: "越界了啊")
}

控制台打印结果:
zhangsan
lisi
wangwu

wangwu
你越界了

wangwu
null
越界了啊
上一篇 下一篇

猜你喜欢

热点阅读