Nel seguente frammento di codice,Scala Futuro [Opzione [T]] Un imballaggio
trait MyType1; trait MyType2
import scala.concurrent.Promise
val p1 = Promise[Option[MyType1]]()
val p2 = Promise[MyType2]()
passo in P1 e P2 ad un'altra funzione, dove io completo la promessa con un futuro di successo. Dopo la chiamata a questa funzione, cerco di leggere il valore della Promessa:
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
"..."
}
}
Quando provo a compilare questo, ottengo alcuni problemi di compilazione.
Error:(52, 19) type mismatch;
found : Option[Nothing]
required: scala.concurrent.Future[?]
flElem <- someF1Elem
^
IntelliJ non mostra errori o che cosa mai ei tipi sembrano allineati. Ma non sono sicuro del motivo per cui il compilatore è infelice! Qualche indizio?