![](/img/trans.png)
[英]Scala cats OptionT: Convert Future[Option[A]] to Future[Either[B]]
[英]Scala Cats OptionT with Either. How to create an error value?
我正在與Cats一起研究出色的Scala,我不確定Monad變壓器。 具體來說,有一個例子
type ErrorOr[A] = Either[String, A]
type ErrorOrOption[A] = OptionT[ErrorOr, A]
val a = 10.pure[ErrorOrOption] // a: OptionT(Right(Some(10)))
val b = 32.pure[ErrorOrOption] // b: OptionT(Right(Some(32)))
val c = a.flatMap(x => b.map(y => x + y)) // c: OptionT(Right(Some(42)))
如何創建一個空選項?
// d: OptionT(Right(None))
如何創建錯誤值?
// e: OptionT(Left("A terrible error."))
如果我在這些值上映射,則傳播的值將為Left是否正確?
謝謝。
我明白了,我需要使用apply
。
val e = OptionT[ErrorOr, Int](Right(None))
val d = OptionT[ErrorOr, Int](Left("A terrible error."))
val f = for {
e1 <- d
e2 <- e
} yield e1 + e2 // f: OptionT(Left(A terrible error.))
val g = 10.pure[ErrorOrOption]
val h = OptionT[ErrorOr, Int](Right(None))
val i = for {
e1 <- g
e2 <- h
} yield e1 + e2 // i: OptionT(Right(None))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.