gpt4 book ai didi

scala - 如何在不使用zip()的情况下将不同类型的Future合并为单个Future

转载 作者:行者123 更新时间:2023-12-03 08:44:24 24 4
gpt4 key购买 nike

我想从下面的代码创建Future[(Class1,Class2,Class3)]类型的Future。但是,我发现这样做的唯一方法是使用zip()。我发现解决方案很难看,而且不是最佳选择。谁能启发我。

val v = for (
a <- {
val f0:Future[Class1] = process1
val f1:Future[Class2] = process2
val f2:Future[Class3] = process3
f0.zip(f1).zip(f2).map(x => (x._1._1,x._1._2,x._2))
} yield a // Future[(Class1,Class2,Class3)]

我也尝试过使用 Future.sequence(List(f0, f1, f2)),但这将无法正常工作,因为新的Future将具有 Future[List[U]]的类型,其中 UClass1/2/3的润滑剂,而我希望保留三元组的原始类型

最佳答案

val result: Future[(Class1, Class2, Class3)] = {
val f1 = process1
val f2 = process2
val f3 = process3
for { v1 <- f1; v2 <- f2; v3 <- f3 } yield (v1, v2, v3)
}

关于scala - 如何在不使用zip()的情况下将不同类型的Future合并为单个Future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11157552/

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