2

我有以下功能,我想返回Future[Boolean],但 IDE 提示我返回Unit。我是 Scala 的新手。有人可以指出我做错了什么吗?

def remove(loginInfo: LoginInfo): Future[Boolean] = {
  val result = findObject(loginInfo)

  result.onSuccess {

    case Some(persistentPasswordInfo) =>

      val removeResult = remove(persistentPasswordInfo._id.toString)

      removeResult.map {
        case Left(ex) => Future.successful(false)
        case Right(b) => Future.successful(b)
      }
    case None => Future.successful(false)

  }

}
4

1 回答 1

2

替换onSuccessflatMap。假设您的remove(x: String)方法还返回 a Future,这也需要flatMapped:

def remove(loginInfo: LoginInfo): Future[Boolean] = {
  val result = findObject(loginInfo)

  result.flatMap {

    case Some(persistentPasswordInfo) =>

      val removeResult = remove(persistentPasswordInfo._id.toString)

      removeResult.flatMap {
        case Left(ex) => Future.successful(false)
        case Right(b) => Future.successful(b)
      }
    case None => Future.successful(false)

  }

}
于 2015-11-12T20:42:01.423 回答