gpt4 book ai didi

scala - 来自onComplete的Scala返回值

转载 作者:行者123 更新时间:2023-12-03 20:28:35 26 4
gpt4 key购买 nike

如何在Scala中构造onComplete以这种方式执行操作:

图。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的情况下,如何才能达到两位数?

最佳答案

不建议通过等待将来的结果来阻塞当前线程。相反,应该在处理result将来的结果时调用bar()函数。

result map {r =>
5
} recover {
case _ => foo()
} map {r =>
bar(r)
}

关于scala - 来自onComplete的Scala返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com