2010-11-14 6 views

Répondre

15

C'est la syntaxe scala pour exploser un tableau. Certaines fonctions prennent un nombre variable d'arguments et pour passer dans un tableau, vous devez ajouter : _* à l'argument tableau.

+7

pinailler: l'argument doit seulement être un 'Seq', ou implicitement convertibles en un' Seq'. – retronym

59

Généralement, la notation : est utilisée pour l'écriture de type, forçant le compilateur à voir une valeur comme un type particulier. Ce n'est pas tout à fait le même que la coulée.

val b = 1 : Byte 
val f = 1 : Float 
val d = 1 : Double 

Dans ce cas, vous êtes le spécial attribuer VarArgs Type. Cela reflète la notation astérisque utilisée pour déclarer un paramètre varargs et peut être utilisé sur une variable de tout type qui sous-classe Seq[T]:

def f(args: String*) = ... //varargs parameter, use as an Array[String] 
val list = List("a", "b", "c") 
f(list : _*) 
+1

J'ai essayé de retourner un tableau de String comme 'String *', j'obtiens une erreur qui ne peut pas résoudre *. Si je renvoie 'Array [String]' et que je le passe à une méthode avec args '(args: String *)' il est dit Expecting String et non 'Array [String]' –

Questions connexes