这是我在代码中的简单情况
fun receiveDogs(vararg dog: Dog){
processDogs(dog)
... //more cool stuff
}
fun processDogs(vararg dog: Dog){
.....//cool stuff
}
执行此操作时,调用processDogs(dog)
会导致编译错误
类型不匹配。
必填:狗
找到了:阵列
<out Dog>
现在了解我的两个函数都需要一个变量。有解决此问题的简单方法吗?
答案 0 :(得分:4)
哦...您需要做
processDogs(*dog)
您需要再次将数组扩展为vararg。
答案 1 :(得分:1)
根据docs:
在函数内部,可以看到T类型的vararg参数作为T的数组
因此,您的函数processDogs
需要使用dogs参数作为Array<out T>
,否则您可以在数组上使用扩展运算符*
来将其传递给vararg函数。
fun processDogs(dogs: Array<Dog>)
或
processDogs(*dog)
如上所述。 既可以编译又可以正常工作