web-dev-qa-db-fra.com

Existe-t-il des méthodes incluses dans Scala= pour convertir des utilles aux listes?

J'ai un Tuple2 De List[List[String]] Et j'aimerais pouvoir convertir le tuple vers une liste afin que je puisse utiliser List.transpose(). Y a-t-il un moyen de faire ça? En outre, je sais que c'est un Pair, même si je suis toujours un fan de solutions génériques.

41
pr1001

Fonctionne avec n'importe quel tuple (Scala 2.8):

myTuple.productIterator.toList

Scala 2.7:

(0 to (myTuple.productArity-1)).map(myTuple.productElement(_)).toList

Je ne sais pas comment gérer les informations de type pour un produit général ou un tuple, mais pour Tuple2:

def Tuple2ToList[T](t: (T,T)): List[T] = List(t._1, t._2)

Bien sûr, vous pourriez définir des conversions similaires de sécurité pour tous les tuples (jusqu'à 22).

77
Mitch Blevins

En utilisant trop bien -

@ import syntax.std.Tuple._
import syntax.std.Tuple._
@ (1,2,3).toList
res21: List[Int] = List(1, 2, 3)
@ (1,2,3,4,3,3,3,3,3,3,3).toList
res22: List[Int] = List(1, 2, 3, 4, 3, 3, 3, 3, 3, 3, 3)

Notez que les informations de type ne sont pas perdues à l'aide de toList.

8
Michael T