将 vararg 参数传递给 Kotlin 中的另一个函数时的编译时错误

我试图在 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) {


}

我怎样才能解决这个问题?


蓝山帝景
浏览 290回答 2
2回答

慕工程0101907

只需*在您传递的参数(扩展运算符)前面放一个,即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

函数a内部的参数a()有类型IntArray,varargs传递给 时需要再次转换为b. 这可以通过“扩展运算符”来完成:*fun a(vararg a: Int) {    b(*a) // spread operator}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java