gpt4 book ai didi

scala - 为什么我需要使用 andThen 来匹配 Futures?

转载 作者:行者123 更新时间:2023-12-04 23:38:57 25 4
gpt4 key购买 nike

我发现为了模式匹配 Future皮草 Success/Failure , 我需要使用 andThen (或 onCompleteonSuccess ...)并且不能使用 map .这是为什么?

我想要做什么(简化,我也匹配 Success 等等):

val f1 = Future(throw new Exception("Oops"))
f1 map { case Failure(e) => ??? }

给出:
error: constructor cannot be instantiated to expected type;
found : scala.util.Failure[T]
required: Nothing
f1 map { case Failure(e) => ??? }

我最终做了什么:
val f1 = Future(throw new Exception("Oops"))
f1 andThen { case Failure(e) => ??? }

我想了解为什么 map不能在这里使用。

最佳答案

答案在 map 的签名中: 它需要一个 A => B并返回 Future[B] .如果愿意,您可以查看 Future如下:

type Future[A] = Async[Either[Throwable, A]]
Future#map , Future#flatMapFuture.apply将这种类型的“堆栈”视为一个带有孔的大东西( Future 基本上是一个特殊的单子(monad)变压器)。当你 map/ flatMapFuture ,您只对内部 A 进行操作.

关于scala - 为什么我需要使用 andThen 来匹配 Futures?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44046609/

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