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")
// 普通取值方式,索引 內(nèi)部是運(yùn)算符重載 [] == 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) ?: "越界了啊")
}
控制臺(tái)打印結(jié)果:
zhangsan
lisi
wangwu
wangwu
你越界了
wangwu
null
越界了啊
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。