1
次のように私はいくつかのラムダ式を持つ:シーケンス
val foo : (Int => Option[String]) = (x: Int) => Some("foo")
val bar : (Int => Option[String]) = (x: Int) => Some("bar")
Seq(foo,bar).flatMap(_ (2))
と私は期待と評価:
res0: Seq[String] = List(foo, bar)
は今、私は彼らがintを取るようにするには、ラムダ式を変更し、おもちゃを返す将来の計算:
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val foo1 : (Int => Future[Option[String]]) = (x: Int) => Future successful Some("foo")
val bar1: (Int => Future[Option[String]]) = (x: Int) => Future successful Some("bar")
私は前の例と同じ結果を返したいと思います。List("foo", "bar")
しかし、私はそれを達成する方法がわかりません。私はMonadトランスフォーマーを使う必要があるとは思っていますが、完全にはわかりません。あなたがFuture[List]
に結果を変換するFuture.sequence
を使用し、それを平らにすることができます
[使用するMonadトランスフォーマは?](http://stackoverflow.com/questions/42290243/which-monad-transformer-to-use)の可能な複製 –