【发布时间】:2019-02-07 17:08:33
【问题描述】:
我有以下代码:
package functorapplication
import scalaz._
import Scalaz._
import scalaz.concurrent.Future
object FunctorApplication2 extends App {
val f1 = Future(3)//(ec)
val f2 = Future(4)//(ec)
val f3 = Future(5)//(ec)
val calculate = (a: Int) => (b: Int) => (c: Int) => a + b + c
val area = f1 <*> (f2 <*> (f3 <*> Future(calculate)))//(ec))) // Future(12)
//println(area)//BindSuspend(scalaz.concurrent.Future$$Lambda...
println("starting")
val summed = for {
a <- area
} yield {
println(a)
}
area.map(value => println(value))
//println(summed)//Suspend(scalaz.concurrent.Future$$Lambda...
println("done")
}
这给出了以下结果:
starting
done
关键是 - 在未来似乎没有任何价值在 for 理解或被映射。
我的问题是:如何从 Scalaz 中的 Future 中获取价值?
注意事项:
这是我的 scala 版本
scalaVersion := "2.12.5",
这是我的 scalaz 版本
"org.scalaz" %% "scalaz-core" % "7.2.26",
"org.scalaz" %% "scalaz-concurrent" % "7.2.26",
"org.scalaz" %% "scalaz-effect" % "7.2.26",
"org.scalaz" %% "scalaz-iteratee" % "7.2.26"
【问题讨论】: