Pinaki Acharya:
Estoy tratando de aceptar un parámetro vararg como un parámetro de la función en Kotlin y tratando de pasar a otra función con parámetros vararg. Sin embargo, me da un error de tiempo de compilación, al hacerlo, type mismatch: inferred type is IntArray but Int was expected
.
Kotlin:
fun a(vararg a: Int){
b(a) // type mismatch inferred type is IntArray but Int was expected
}
fun b(vararg b: Int){
}
Sin embargo, si intento el mismo código en Java, funciona.
Java:
void a(int... a) {
b(a); // works completely fine
}
void b(int... b) {
}
¿Cómo puedo evitar esto?
Roland:
Sólo hay que poner una *
en frente de su argumento (operador de difusión) pasado, es decir,
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
}
Ver también: Referencia de funciones Kotlin #varargs