2011-12-19 28 views
5

Bunu geri döndüren bir yöntemim var.Tuple'ı ilk öğenin listesine dönüştürün

Vector[ (PkgLine, Tree) ]() 

Bunu bir PkgLines Listesine dönüştürmek istiyorum. Ağacıyı bırakmak istiyorum. Scala kütüphanesinde bunu yapmama izin verecek bir şey göremiyorum. Herhangi bir basit fikri olan var mı? Teşekkürler.

cevap

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

Bir tupel t varsa, t._1 kullanarak ilk elemanını erişebilirler. Böylece, map işlemiyle ağaçları etkili bir şekilde atar ve doğrudan PkgLines'u depolarsınız. Sonra Vector'u List'a dönüştürürsünüz. çiftinin ilk elemanın bir seçici ile map kullanma

+4

'breakOut' aracı' Vector'u atlamak için güzel bir yoldur :: 'vector.map (_._ 1) (collection.breakOut): [PkgLine] 'yi listele – 4e6

4

çalışır:

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) 

Alternatif olarak, unzip kullanabilirsiniz:

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) 
İlgili konular