【问题标题】:Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:未解决的参考。由于接收器类型不匹配,以下候选均不适用:
【发布时间】:2022-06-12 22:19:23
【问题描述】:

我真的是 kotlin 的新手,在这里我试图通过定义一个没有任何返回的函数来反转一个列表。我的逻辑只是将索引交换到中间。

但是,我收到一条错误消息,附在下面。如果有人能帮助我理解错误,我将不胜感激。我在下面附上了我的代码和错误消息。

反转函数

fun reverse (list:  List<Int>){

    var j = list.size-1
    for (i in 0..(list.size-1)/2){
        var t = list[i]
        list[i] = list[j]
        list[j] = t
        j--
    }

}

主要功能

fun main() {
     
    var list =  listOf(1,2,3,4,5,6,7,8,9,10)
    reverse(list)
    println(list)
}

错误信息

Kotlin:未解决的参考。由于接收器类型不匹配,以下候选均不适用:(这是用于交换线list[i] = list[j]

【问题讨论】:

    标签: kotlin reverse


    【解决方案1】:

    你需要一个 MutableList,你不能改变 List 中的元素。

    fun reverse(list: MutableList<Int>) {
      var j = list.size - 1
      for (i in 0..(list.size - 1) / 2) {
        val t = list[i]
        list[i] = list[j]
        list[j] = t
        j--
      }
    }
    
    var list = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
    reverse(list)
    
    println(list)   // Output [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    

    另外:有一个内置函数 reversed(),参见:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/reversed.html,它将返回一个 List。还有一个内置函数 asReversed(),见:https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/as-reversed.html,它会返回一个 MutableList。

    【讨论】:

    • 它成功了,谢谢。
    猜你喜欢
    • 2019-04-19
    • 2021-10-21
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2021-05-11
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多