w poniższym przykładzie,Scala przyszłości [opcja [t]] Un pakowania
trait MyType1; trait MyType2
import scala.concurrent.Promise
val p1 = Promise[Option[MyType1]]()
val p2 = Promise[MyType2]()
przekazać P1 i P2 na inne stanowisko, gdzie zakończenia Promise pomocą skutecznej przyszłości. Po wywołaniu tej funkcji, próbuję odczytać wartość w obietnicy:
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
"..."
}
}
Kiedy próbuję skompilować ten, mam pewne problemy kompilatora.
Error:(52, 19) type mismatch;
found : Option[Nothing]
required: scala.concurrent.Future[?]
flElem <- someF1Elem
^
IntelliJ nie pokazuje błędów ani tego, co-tak-kiedykolwiek, a typy wyglądają równo. Ale nie jestem pewien, dlaczego kompilator jest nieszczęśliwy! Jakieś wskazówki?