Преобразовать кортеж в список первого элемента - PullRequest
5 голосов
/ 19 декабря 2011

Скажем, у меня есть метод, который возвращает это.

Vector[ (PkgLine, Tree) ]()

Я хочу преобразовать это в список PkgLines.Я хочу бросить дерево.Я не вижу в библиотеке scala ничего такого, что позволило бы мне это сделать.У кого-нибудь есть простые идеи?Спасибо.

Ответы [ 2 ]

16 голосов
/ 19 декабря 2011
val list = vector.map(_._1).toList

Если у вас есть Tupel t, вы можете получить доступ к его первому элементу, используя t._1. Таким образом, с помощью операции map вы фактически выбрасываете деревья и сохраняете PkgLines напрямую. Затем вы просто конвертируете Vector в List.

4 голосов
/ 19 декабря 2011

Использование map с селектором первого элемента пары работает:

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)

В качестве альтернативы вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...