我该如何使用类型为Future[\/[String,Int]]
的数据进行for
推导呢?以下是一个起点,但无法编译。
import scala.concurrent.{ExecutionContext,future,Future}
import scalaz._
import Scalaz._
import ExecutionContext.Implicits.global
def calculateStuff(i:Int):Future[\/[String,Int]] = future{\/-(i)}
for {
v1Either <- calculateStuff(1)
v1Int <- v1Either
v2Either < calculateStuff(v1Int)
v2Int <- v2Either
v3Either <- calculateStuff(v2Int)
v3Int <- v3Either
} yield {
v1Int + v2Int + v3Int
}
注意:
calculateStuff
只是一个例子,实际上会有不同的函数,每个函数都依赖于前面的结果。