Im folgenden AusschnittScala Zukunft [Option [T]] Un Verpackung
trait MyType1; trait MyType2
import scala.concurrent.Promise
val p1 = Promise[Option[MyType1]]()
val p2 = Promise[MyType2]()
Ich gehe in P1 und P2 an einem anderen Funktion, wo ich das Versprechen mit einer erfolgreichen Zukunft abzuschließen. Nach dem Aufruf dieser Funktion, ich versuche, den Wert in dem Versprechen zu lesen:
trait Test {
// get the Future from the promise
val f1 = p1.future
val f2 = p2.future
for {
someF1Elem <- f1
f1Elem <- someF1Elem
f2Elem <- f1Elem
} yield {
// do something with f1Elem and f2Elem
"..."
}
}
Wenn ich versuche, dies zu kompilieren, ich einige Compiler Probleme bekommen.
Error:(52, 19) type mismatch;
found : Option[Nothing]
required: scala.concurrent.Future[?]
flElem <- someF1Elem
^
IntelliJ zeigt keine Fehler oder was auch immer und die Typen sehen ausgerichtet aus. Aber ich bin mir nicht sicher, warum der Compiler unglücklich ist! Irgendwelche Hinweise?