Как объединить Future[A]
и Future[Option[A]]
в одном for
-познании? Следующий фрагмент работает, но выглядит уродливым, есть ли лучший способ?Сочетание различных вложенных монад в понимании
def getOne: Future[Int] = Future.value(1)
def getSomeOne: Future[Option[Int]] = Future.value(Some(1))
def main(args: Array[String]): Unit = {
val sum = for {
y <- OptionT(getOne.map(Some(_)).asInstanceOf[Future[Option[Int]]])
x <- OptionT(getSomeOne)
} yield x + y
println(Await.result { sum.run })
}
какое будущее вы используете? Я не могу найти значение метода в 'scala.concurrent.Future'. – pedrofurla
'twitter.util.Guture'. Не имеет значения, так часто бывают случаи для «Functor» и «Monad» – synapse
Не беспокойтесь, работайте вокруг него. – pedrofurla