Dans l'extrait de code suivant, la méthode bookExists
invoque la méthode find
pour déterminer si le livre identifié par l'identifiant indiqué existe:Scala: Comment attendre un avenir
class BookStore {
def find(id: String): Future[Option[Book]] = {
// read from db
...
}
def bookExists(id: String): Boolean = {
find(id).map {
case Some(_) => true
case _ => false
}.recover {
case e => false
}
}
}
Le problème est que la classe ci-dessus n » t compiler probablement parce que j'ai besoin d'attendre jusqu'à ce que le Future
se termine réellement. Je reçois toujours le message d'erreur suivant:
[error] /home/j3d/test/BookStore.scala:118: type mismatch;
[error] found : scala.concurrent.Future[Boolean]
[error] required: Boolean
[error] ).map {
[error] ^
Quelle est la bonne façon de gérer ce cas?
Pourquoi pas '.map (_. NonEmpty)'? –