为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蓝山帝景 2021-06-18 18:19:52
我试图在 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

}


查看完整回答
反对 回复 2021-06-30
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

函数a内部的参数a()有类型IntArray,varargs传递给 时需要再次转换为b. 这可以通过“扩展运算符”来完成:*


fun a(vararg a: Int) {

    b(*a) // spread operator

}


查看完整回答
反对 回复 2021-06-30
  • 2 回答
  • 0 关注
  • 289 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信