在Kotlin中获取varargs的类型不匹配

时间:2018-10-09 01:34:06

标签: kotlin

这是我在代码中的简单情况

fun receiveDogs(vararg dog: Dog){
    processDogs(dog)
    ... //more cool stuff
}

fun processDogs(vararg dog: Dog){
  .....//cool stuff
}

执行此操作时,调用processDogs(dog)会导致编译错误

  

类型不匹配。

     

必填:狗

     

找到了:阵列<out Dog>

现在了解我的两个函数都需要一个变量。有解决此问题的简单方法吗?

2 个答案:

答案 0 :(得分:4)

哦...您需要做

processDogs(*dog)

您需要再次将数组扩展为vararg。

答案 1 :(得分:1)

根据docs

  

在函数内部,可以看到T类型的vararg参数作为T的数组

因此,您的函数processDogs需要使用dogs参数作为Array<out T>,否则您可以在数组上使用扩展运算符*来将其传递给vararg函数。

fun processDogs(dogs: Array<Dog>)

processDogs(*dog)

如上所述。 既可以编译又可以正常工作