2012-02-28 8 views

Respuesta

7

Bajo el capó, String* se pasa como un Seq[String]. Es simplemente todo el azúcar sintáctica:

def blah(ss: String*) = {...} 
blah("Hi","there") 

se convirtió en

def blah(ss: Seq[String]) = {...} 
blah(Seq("Hi", "there")) 

y :_* simplemente significa "mantener el azúcar, ya tengo lo que necesita - una Sec!"

+0

es decir, no es un método de la Sec, sólo otra de azúcar - una especie de operador especial? :) – tuxSlayer

+1

@tuxSlayer - Eso es correcto. ':' significa "es de tipo", como en 'val x: Int' (' x' es de tipo 'Int'). Entonces '_ *' debería ser de algún tipo (el tipo "Sé que quieres varargs pero, mira aquí, ya tengo un Seq!"). De acuerdo, no es un tipo real, pero al menos el azúcar es sintácticamente consistente. –

+0

Bien, gracias. Hoy he pasado un tiempo buscando este método en la biblioteca :) Ahora está claro :) – tuxSlayer

Cuestiones relacionadas