我正在scala中使用.. yield来循环Future[Try[A]]
类型的对象。 Scala中的for .. yield实现将使我能够在一个for循环中将外部容器(Future)和一个嵌套循环中的内部容器(Try)进行平面映射。
for {_a <- a
_b <- b
} yield {
for {__a <- _a
__b <- _b
} yield {
someOP(__a, __b)
}
}
我正在寻找一种在单个for循环中编写此代码的方法,也许像
for (__a <- a
__b <- b
) yield {
someOP(__a, __b)
}
或具有以下方法签名的某种遍历函数:
def traverse[G[_], F[_], A](z: F[G[List[A]]])(l: List[F[G[A]]]): F[G[List[A]]]
我确实意识到,如果我将F
的类型称为Future
,而将G
的类型称为Try
,那么我可以简单地编写一个满足我的要求的方法。但是我正在寻找一种通用方法,该方法可以说可以与Option
和Either
一起使用,或者可以与类中定义的flatMap
操作类似,例如yield的工作方式