Как я могу структурировать onComplete в Scala, чтобы действовать таким образом:
рис. 1
{
var x;
if(result.isFailure){
x = foo() // foo is a future
}
if(result.isSuccess){
x = 5
}
bar(x)
}
Я думал, что смогу сделать это так:
рис. 2
var x = foo onComplete {
case Success(x) => 5
case Failure(t) => foo() //foo is a future
}
bar(x)
Но onComplete, onFailure и onSuccess имеют Unit
как возвращаемый тип,
onComplete[U](f: (Try[T]) ⇒ U)(implicit executor: ExecutionContext): Unit
onSuccess[U](pf: PartialFunction[T, U])(implicit executor: ExecutionContext): Unit
onFailure[U](pf: PartialFunction[Throwable, U])(implicit executor: ExecutionContext): Unit
Как я могу достичь чего-то двухзначного без использования var?