Kotlin中调用removeAt方法删除列表元素报错:Unresolved Reference: removeAt
解决Kotlin中
removeAt未找到的报错问题 嘿,我来帮你搞定这个问题!你遇到的unresolved reference: removeAt报错,核心原因很清晰:
问题根源
你用listOf()创建的sachmelebi是不可变列表(Immutable List),Kotlin的不可变列表设计初衷就是不允许修改,所以根本没有removeAt()这类修改元素的方法——编译器找不到这个方法,自然抛出报错。
另外还有个小细节:你把println(sachmelebi.removeAt(asd))写在了main()函数外面,这在Kotlin里是不合法的,所有可执行代码必须放在函数或类的作用域内。
解决方案
只需要做两个小改动就能解决:
- 用
mutableListOf()代替listOf(),创建可变列表(Mutable List),这样就能使用removeAt()等修改方法了 - 把所有操作代码移到
main()函数内部
修正后的完整代码
fun main() { data class SachmelebiClass( val name: String, val link: String ) // 改用mutableListOf创建支持修改的可变列表 val sachmelebi = mutableListOf( SachmelebiClass( "ხინკალი", "https://www.google.com/search?q=%E1%83%AE%E1%83%98%E1%83%9C%E1%83%99%E1%83%90%E1%83%9A%E1%83%98&oq=%E1%83%AE%E1%83%98%E1%83%9C%E1%83%99%E1%83%90%E1%83%9A%E1%83%98&aqs=chrome..69i57j46j0l6.1143j0j9&sourceid=chrome&ie=UTF-8" ), SachmelebiClass("aa", "aaa"), SachmelebiClass("bb", "bbb") ) val randomItem = sachmelebi.random() println("选中的元素:$randomItem") val index = sachmelebi.indexOf(randomItem) // 删除指定索引的元素,并打印被删除的内容 val removedItem = sachmelebi.removeAt(index) println("被删除的元素:$removedItem") // 打印修改后的列表,确认元素已删除 println("修改后的列表:$sachmelebi") }
关键知识点补充
- 不可变列表:
listOf()创建的列表仅支持读取操作,适合内容固定的场景 - 可变列表:
mutableListOf()创建的列表支持add()、removeAt()、set()等修改操作,适合需要动态调整内容的场景 removeAt(index: Int)方法会删除指定索引的元素,并返回被删除的元素,所以可以直接获取并打印这个返回值
内容的提问来源于stack exchange,提问作者kote tandarashvili
相关产品推荐
相关产品推荐

