Итак, я совершенно не знаком с Scala, исходя из фона Java и получил огромную базу кода scala для изучения. И я очень потерян и буду признателен за любую помощь.scala return the Future [Option [user]]
У меня есть функция ниже, которую я хочу переустановить. В настоящее время функция вызывает две функции в строке, а затем возвращает результат. Первая функция возвращает логическое значение, а вторая функция возвращает пользователя. Однако, что на самом деле должно произойти, так это то, что вторая функция должна вызываться только в том случае, если первая функция возвращает true. Поэтому мне нужно переставить его, чтобы проверить возвращаемое значение первой функции перед продолжением. Каждый раз, когда я переписываю его для этого, я либо получаю ошибку компиляции, либо исключение. Предполагается вернуть Future [Option [User]], и первая функция не возвращает пользователя. Я просто хочу вернуть None, если FunctionA терпит неудачу, но поскольку он ожидает Future [Option [X]]], он недоволен. Итак, ниже приведена функция:
private def profileForCredentials(userId: String, password: String)(implicit ec: ExecutionContext): Future[Option[User]] =
{
val credentials: Throwable \/ Boolean = {
try {
FunctionA(userId, password).right[Throwable]
}
catch {
case npe: NullPointerException =>
npe.left[Boolean]
}
}
//This function doesn't need to be called unless credentials=true
FunctionB(id, userId).map {
case [email protected](user) =>
credentials match {
case \/-(x) if x =>
user.some
case _ =>
None
}
case None =>
None
}
}
Где '' Future''? –
Попробуйте вернуться 'Future {None}' not 'None' – Rumoku
@Jean Logeart FunctionB propably возвращает Future. – Rumoku