error de tiempo de compilación de paso parámetro vararg a otra función en Kotlin

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=191401&siteId=1
Recomendado
Clasificación