2016-03-31 23 views
2

In scala gibt es eine einfache Möglichkeit, ein optionales Tupels in ein Tupel von Optionen zur Transformation d.hOptional Tupel Tupel von Optionen

Option[(Int, Int)] => (Option[Int], Option[Int]) 

Dank

P. S. Ich bin jetzt gerade mit:

val myTuple: Option[(Int, Int)] = Some((1, 1)) 
if (myTuple.isDefined) 
    (Some(myTuple.get._1), Some(myTuple.get._2)) 
else 
    (None, None) 
+0

Was haben Sie versucht? Ich werde das sowieso beantworten, aber es wäre nett, wenn du zuerst niederlegst, was du versucht hast. – wheaties

+0

Sorry, ich habe meinen aktuellen Code hinzugefügt –

Antwort

3

So etwas wie dies vielleicht (nicht, dass es viel „leichter“ ist als das, was Sie haben, aber mehr idiomatische):

option.map { case (a,b) => Some(a) -> Some(b) }.getOrElse(None -> None) 
+0

Ja, es ist sicherlich mehr idiomatic, danke –

+0

Es wird jedoch zu einem Match-Fehler führen, wenn es kein Tupel ist. – wheaties

+0

@wheaties hast du die Frage gelesen? ;) – Dima

2
val myTuple: Option[(A, B)] = ... 
(myTuple.map(_._1), myTuple.map(_._2)) 
+0

So offensichtlich! Vielen Dank –