Próbuję napisać specyfikację dla czegoś z wykorzystaniem kontraktów terminowych, i nie jestem pewien, jak mam korzystać z cechy Futures
. Muszę przekazać whenReady
a FutureConcept
, ale nie mogę znaleźć, jak powinienem zbudować jeden z Future
. Dokumentacja brzmi:przekazywanie kontraktów futures na czas, gdy Ready kończy się niepowodzeniem
Aby whenReady szerzej stosowane, rodzaj przyszłości akceptuje to FutureConcept [T], gdzie T jest typem wartości obiecał o przyszłości. Przekazywanie przyszłości, gdy firma Ready wymaga niejawnej konwersji z rodzaju przyszłości, którą chcesz przekazać (modelowany) na FutureConcept [T].
Z tego rozumiem, że muszę napisać niejawna konwersja między Future
i FutureConcept
(co wydaje się niewłaściwy do mnie, wydaje się, że powinno być boilerplate, ale to jedyne co mogę zrobić z nim) . Nie mogę dowiedzieć się, jak to zrobić, choć dokumentacja FutureConcept mówi mi dłoń
Zobacz dokumentację dla kontraktów cecha dla Szczegółowe informacje o składni ta cecha stanowi dla testów z przyszłości.
doprowadzając mnie do pełnego krąg. Najprostszym przykładem I ugotował jest
import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
import org.scalatest.WordSpecLike
import org.scalatest.concurrent._
class FutureSpec extends WordSpecLike with Futures {
"A future" must {
"be a valid argument for whenReady" in {
val fut = future { 42 }
whenReady(fut) { res => s should be 42 }
}
}
}
To nie skompilować z
- typu niedopasowania; znaleziono: scala.concurrent.Future [Int] required: FutureSpec.this.FutureConcept [?]
- ';' spodziewany, ale całkowity literał znaleziony.
co powinienem robić inaczej?
Ta odpowiedź jest absolutnie w porządku, po prostu dodać trochę jasności: zmiana „futures” na „z ScalaFutures” –
dziękuję czy to jest lepsze? – Martijn
To jest idealne. Twoja odpowiedź bardzo mi pomogła. Twoje zdrowie! –