web-dev-qa-db-fra.com

scala: Comment passer une liste étendue en tant que varargs dans une méthode?

Lors de la création d'un Map dans scala, j'appelle Map(entities.map{e => e.id -> e}), et j'obtiens:

found   : scala.collection.mutable.IndexedSeq[(Int, Entity)]
required: (Int, Entity)

En effet, la signature de Map.apply Est: def apply[A, B](elems: (A, B)*): CC[A, B], ce qui nécessite un argument de style varargs.

Existe-t-il un moyen de convertir le IndexedSeq afin qu'il puisse être accepté via Map.apply?

50
dsg

Essayez ceci: Map(entities.map{e => e.id -> e}:_*)

Le taper explicitement en tant que varargs en utilisant :_* semble fonctionner.

93
dsg

Ou cela devrait aussi fonctionner:

entities.map{e => e.id -> e} toMap
7