2016-05-03 5 views
0

Angeblich soll Ich habe eine Liste von Tupeln:Integer Tupels Stringtupel

tuple1: List[(String, String)] = List((0,3), (3,6), (6,12), (12,14), (14,15)) 

Ich habe versucht, die folgenden:

tuple1.unzip match { case(l1, l2) => (l1.toString, l2.toString)} 
res9: (String, String) = (List(0, 3, 6, 12, 14),List(3, 6, 12, 14, 15)) 

tuple1 map(_.toString) 
res5: List[String] = List((0,3), (3,6), (6,12), (12,14), (14,15)) 

Beide

tuple1: List[(Int, Int)] = List((0,3), (3,6), (6,12), (12,14), (14,15)) 

Wie kann ich es ändern sind nicht das Ergebnis, das ich suche.

Antwort

4

Sie waren mit Ihrem Versuch nah. Muss nur Teile von beiden kombinieren.

tuple1.map { case(l1, l2) => (l1.toString, l2.toString) } 
0

Ein weiterer Ansatz für eine for-yield wenn Sie es vorziehen.

for{ 
    t <- tuple1 
} yield (t._1.toString, t._2.toString) 
res0: List[(String, String)] = List((0,3), (3,6), (6,12), (12,14), (14,15)) 
1

Für einen solchen einfachen Fall würde ich nicht stören, aber shapeless gibt Ihnen map über Tupeln, die documentation für Beispiele.