2011-12-19 16 views
5

Dire che ho un metodo che restituisce questo.Converti tuple in un elenco del primo elemento

Vector[ (PkgLine, Tree) ]() 

Voglio convertirlo in un elenco di PkgLines. Voglio togliere l'albero. Non vedo nulla nella scala libreria che mi consenta di farlo. Qualcuno ha qualche idea semplice? Grazie.

risposta

16
val list = vector.map(_._1).toList 

Se si dispone di un Tupel t, è possibile accedere al suo primo elemento utilizzando t._1. Pertanto, con l'operazione map, stai effettivamente buttando via gli alberi e archivia direttamente PkgLines. Quindi devi semplicemente convertire lo Vector in List.

+4

'breakOut' è un bel modo per saltare intermediario' Vector ':' vector.map (_._ 1) (collection.breakOut): List [PkgLine] ' – 4e6

4

Utilizzando map con un selettore del primo elemento della coppia funziona:

scala> val v = Vector[(Int,String)]((5,"5"), (42,"forty-two")) 
v: ... = Vector((5,5), (42,forty-two)) 

scala> v.map(_._1).toList 
resN: List[Int] = List(5, 42) 

In alternativa, è possibile utilizzare unzip:

scala> val (ints,strings) = v.unzip 
ints: scala.collection.immutable.Vector[Int] = Vector(5, 42) 
strings: scala.collection.immutable.Vector[String] = Vector(5, forty-two) 

scala> ints.toList 
resN: List[Int] = List(5, 42) 
Problemi correlati