【发布时间】:2018-10-03 19:11:00
【问题描述】:
我在 scala 中使用 for ..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 的工作原理
【问题讨论】: