Вы получаете непроверенную ошибку, потому что один из ваших операторов if-else имеет неправильный тип в результате блока.
ПРИМЕЧАНИЕ: этот метод возвращает Future[User]
def confirmSignupforUser(user:User):Future[User] = ???
но вы получаете ошибку компиляции в том, что else
оператор возвращает Future[Option[User]]
. Я бы предложил выровнять это если еще заявление. Вы можете либо изменить свой метод, чтобы вернуть Future[Option[User]]
ИЛИ вы можете изменить, если деталь выглядит следующим образом:
confirmSignupforUser(userOption.get).map(Some(_))
Итак, ломаная линия может быть определена так:
for {
modifiedUser: Option[User] <- if (userOption.isDefined) {
confirmSignupforUser(userOption.get).map(Some(_))
} else Future.successful(None)
}
вы можете запустить его здесь как простую демонстрацию
ИМХО, лучше go с OptionT
здесь