我怎样才能避免map(identity)
在 Scala 中的for
理解?
例如,考虑:
import scala.concurrent._
import scala.concurrent.duration._
object Test extends App {
implicit val executorContext = ExecutionContext.global
val future = Future.successful { 1 }
val result = for (
value <- future;
b <- Future { value * 2 }
) yield b
println(Await.result(result, 60 seconds))
}
IIUC,for
-comprehension 转换为类似
future.flatMap(value => Future { value * 2 }).map(identity)
我可以map(identity)
以某种方式避免尾随吗?或者Scala是否/可以/可以优化它?(我想它不能,因为不清楚是否map
有任何副作用,对吧?)
PS我知道在这个特定的例子中,事情可以改进。我想知道一般情况,例如Future { value * 2}
调用返回未来f(value)
的函数。f