这是一个文体问题和我试图拓宽对 Scala 理解的尝试的结合。
我有一个包含 Future 的列表,我想计算期货的值,转换为 Option,并使用 for 理解来展平列表:
import scala.util.Try
import scala.concurrent._
import ExecutionContext.Implicits.global
val l= List(Future.successful(1),Future.failed(new IllegalArgumentException))
implicit def try2Traversible[A](xo: Try[A]): Iterable[A] = xo.toOption.toList
val res = for{f <- l; v <- f.value} yield v
scala> res: List[scala.util.Try[Int]] = List(Success(1), Failure(java.lang.IllegalArgumentException))
res.flatten
res16: List[Int] = List(1)
我想要做的是让扁平化阶段进入理解,有人有什么建议吗?