gpt4 book ai didi

scala - 展平 Future[Option[Option[T]]] 的 Option 部分

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

我有一个results: List[Future[Option[T]]]其中包含(并行)计算。

我想获得第一个非None尽快出结果,或者返回None如果所有计算都返回 None .

目前,我正在这样做(我认为这很难看)来处理 Future.find 的情况。没有找到任何结果。

Future.find(results)(r => r.isDefined) map { 
case Some(hit) => hit
case _ => None
}

这会给我一个Future[Option[T]] (我想要的)。

有没有更干净的方法来获取 Future[Option[T]] :即无需手动展平 Future[Option[Option[T]]]

最佳答案

您可以编写一个通用函数,例如:

,而不是将其专门用于选项
def collectFirst[A, B](futures: List[Future[A]])(pfn: PartialFunction[A, B])
(implicit ex: ExecutionContext): Future[Option[B]] =
Future.find(futures)(pfn.isDefinedAt) map (_.collect(pfn))

就这一点而言,您可以将您的问题改写为:

collectFirst(results) { case Some(hit) => hit }

关于scala - 展平 Future[Option[Option[T]]] 的 Option 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652966/

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