Did*_*ion 1 scala for-comprehension
简化代码:
val one: Future[String] = Future("1")
val many: Future[List[String]] = Future({"1","2","3"})
for { 
  a <- one
  b <- many
} yield {
  doSomething(a,b) // Type mismatch, expected String, actual: List[String]
}
我想发生的事情是每两个(一对)呼叫并获得输出列表
 {doSomething("1","1"),doSomething("1","2"),doSomething("1","3")}
即使一个是a Future[String]而另一个是a ,我也可以使用它进行理解Future[List[String]]吗?
尝试
  val one: Future[String] = Future("1")
  val many: Future[List[String]] = Future(List("1","2","3"))
  def doSomething(a: String, b: String) = ???
  for {
    a <- one
    b <- many
  } yield {
    b.map(v => doSomething(a, v))
  }
或者我们可以ListT像这样使用scalaz 变压器
  import scalaz._
  import ListT._
  import scalaz.std.scalaFuture.futureInstance
  val one: Future[String] = Future("1")
  val many: Future[List[String]] = Future(List("1","2","3"))
  def doSomething(a: String, b: String) = ???
  for {
    a <- listT(one.map(v => List(v)))
    b <- listT(many)
  } yield {
    doSomething(a, b)
  }