java - 将 vararg 参数传递给 Kotlin 中的另一个函数时出现编译时错误
问题描述
我试图接受一个可变参数作为 Kotlin 中的函数参数,并尝试将它传递给另一个带有可变参数的函数。但是,这样做会给我一个编译时错误,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) {
}
我怎样才能解决这个问题?
解决方案
只需*
在您传递的参数(扩展运算符)前面放一个,即
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
}
另请参阅:Kotlin 函数参考 #varargs
推荐阅读
- python - 无法在for循环的升序和降序范围内打印
- flutter - Flutter 示例构建问题
- azure - Azure Bot 下载源代码按钮不起作用
- java - 无法将 Spring mvc 部署到 intellij 中的 tomcat
- android - 关于在特定设备上进行电话管理器空值检查期间的错误
- ansible - 如何检查特定端口上的两个节点之间是否可以通信
- c# - 如何仅从文本中删除 url 而忽略 c# 中的其他 url
- python - 如何在缺少数据的情况下使用 tf.data.experimental.make_csv_dataset?
- python - Pandas - 通过所有独特的组合组合两个系列
- javascript - Javascript函数不会打印