如何编写Kotlin纯函数修改List元素且不改变原始列表
Kotlin 泛型纯函数实现
完整代码实现
fun <T> change(list: List<T>, index: Int, value: T): List<T> { // 下标合法性校验,可根据需求选择是否保留 require(index in list.indices) { "索引 $index 超出列表合法范围 0..${list.lastIndex}" } return list.take(index) + value + list.drop(index + 1) }
实现说明
list.take(index)对应参考TS实现中的array.slice(0, index),截取列表从开头到目标索引前的所有元素- 中间拼接要替换的新值
value list.drop(index + 1)对应参考TS实现中的array.slice(index + 1),截取列表从目标索引后一位到末尾的所有元素- Kotlin中对只读List使用
+运算符会自动生成全新的只读List,全程不会修改传入的原始列表,符合纯函数要求
调用示例
fun main() { val originList = listOf("苹果", "香蕉", "橙子", "葡萄") val newList = change(originList, 2, "西瓜") println(originList) // 输出 [苹果, 香蕉, 橙子, 葡萄],原始列表完全未被修改 println(newList) // 输出 [苹果, 香蕉, 西瓜, 葡萄],返回修改后的新列表 }
内容的提问来源于stack exchange,提问作者Omar Khaled
相关产品推荐
相关产品推荐

