我试图在 Kotlin 中接受一个 vararg 参数作为函数参数,并尝试将它传递给另一个带有 vararg 参数的函数。但是,这样做会给我一个编译时错误,type mismatch: inferred type is IntArray but Int was expected.科特林:fun a(vararg a: Int){ b(a) // type mismatch inferred type is IntArray but Int was expected}fun b(vararg b: Int){}但是,如果我在 Java 中尝试相同的代码,它会起作用。爪哇:void a(int... a) { b(a); // works completely fine}void b(int... b) {}我怎样才能解决这个问题?
2 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
只需*在您传递的参数(扩展运算符)前面放一个,即
fun a(vararg a: Int){
// a actually now is of type IntArray
b(*a) // this will ensure that it can be passed to a vararg method again
}
慕妹3146593
TA贡献1820条经验 获得超9个赞
函数a内部的参数a()有类型IntArray,varargs传递给 时需要再次转换为b. 这可以通过“扩展运算符”来完成:*
fun a(vararg a: Int) {
b(*a) // spread operator
}
添加回答
举报
0/150
提交
取消