私はScala for
の仕組みを理解するために積み重ねています。 以下のコードはfor
と書かれていると思いますが、どういう考え方はありません。 誰かが私にそのことをどうやって説明することができますか?ScalaのflatMap/mapの代わりにforを使用するには?
def foo: Future[Option[Int]] = ???
def bar: Future[Throwable Xor Option[Int]] = ???
def baz: Future[Option[Boolean]] = ???
foo.flatMap {
case Some(x) =>
Future.successful(x)
case None =>
bar.flatMap {
case Xor.Right(Some(x)) =>
baz.map {
case true => 1
case false => 0
}
case Xor.Right(None) =>
Future.successful(0)
case Xor.Left(_) =>
Future.successful(-1)
}
}
多分これは役立ちます:http://stackoverflow.com/questions/19045936/scalas-for-comprehension-with-futures – meucaa