You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin:如何创建用于更新列表元素的自定义扩展函数

实现自定义的List更新扩展函数

情况1:原地修改MutableList

如果需要直接修改原可变列表(MutableList),可以编写如下扩展函数:

fun <T> MutableList<T>.update(predicate: (T) -> Boolean, newValueProvider: () -> T) {
    this.forEachIndexed { index, item ->
        if (predicate(item)) {
            this[index] = newValueProvider()
        }
    }
}

使用示例:

val dogs = mutableListOf("shiba", "golden", "samoid")
// 按你期望的写法调用
dogs.update { it == "shiba" } { "doge" }
// 执行后dogs变为 ["doge", "golden", "samoid"]

这个函数逻辑直接:遍历列表,对符合predicate条件的元素,用newValueProvider生成的新值原地替换。


情况2:针对不可变List返回新列表

如果你的列表是用listOf创建的不可变列表,不想修改原列表而是生成新列表,可以用这个版本:

fun <T> List<T>.update(predicate: (T) -> Boolean, newValueProvider: () -> T): List<T> {
    return this.map { item ->
        if (predicate(item)) newValueProvider() else item
    }
}

使用示例:

val dogs = listOf("shiba", "golden", "samoid")
val updatedDogs = dogs.update { it == "shiba" } { "doge" }
// updatedDogs为 ["doge", "golden", "samoid"],原dogs保持不变

这个版本是对map的语义化封装,完全贴合你想要的简洁写法。


内容的提问来源于stack exchange,提问作者xX_Xeno_Blade_Xx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:54:05