首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scala Cats使用其中任何一个。如何创建错误值?

Scala Cats使用其中任何一个。如何创建错误值?
EN

Stack Overflow用户
提问于 2018-06-02 04:38:22
回答 1查看 487关注 0票数 0

我正在研究优秀的Scala with Cats,但我对Monad transformers不太确定。具体地说,这里有一个例子

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))

  • How我可以创建一个错误值吗?

// e: OptionT(Left(“一个可怕的错误”))

  • 如果我在这些值上进行映射,传播值是否会是Left?

是否正确

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 04:52:12

我明白了,我需要用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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50650711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档