varargs vararg parametros indefinidos argumentos java scala

parametros - ¿Qué hace:_* al llamar a un método vararg de Java desde Scala?



vararg kotlin (1)

Posible duplicado:
¿Qué hace :_* (estrella de subrayado de colon) en Scala?

Estoy usando el REPL para llamar a un método vararg de Java con una matriz Scala.

Me sale un error si hago esto:

case class Person(name: String, age: Int) val array = Array(classOf[String], classOf[Int]) Person.getClass.getMethod("apply", array)

Pero si hago esto, entonces funciona:

Person.getClass.getMethod("apply", array:_*)

Mis preguntas es qué hace :_* hacer? ¿Dónde está definido en la API de Scala?


añadiendo :_* le dice al compilador que trate la matriz como varargs. Funciona igual con Scala que con Java. Si tengo un metodo

def foo(args: Int*) = args.map{_ + 1}

Puedo llamarlo como tal:

foo(1, 2, 3, 4) //returns ArrayBuffer(2, 3, 4, 5)

pero si quiero pasarle una secuencia real (como lo está con getMethod ) haría:

val mylist = List(1, 2, 3, 4) foo(mylist:_*)