美文网首页
Kotlin List 防止崩溃取值方式:getOrElse()

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

作者: wuchao226 | 来源:发表于2021-09-22 17:56 被阅读0次
    • getOrElse() 提供用于计算默认值的函数,如果集合中不存在索引,则返回默认值。
    • getOrNull() 返回 null 作为默认值。
    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
    越界了啊
    

    相关文章

      网友评论

          本文标题:Kotlin List 防止崩溃取值方式:getOrElse()

          本文链接:https://www.haomeiwen.com/subject/iydggltx.html