Scala猫选项与任一个。如何创建错误值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (26)

具体来说,有一个例子

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(右(无)
  • 我如何创建一个错误值?/e:OptionT(左(“一个可怕的错误”)
  • 如果我映射到这些值上,传播的值将是左值,这是正确的吗?
提问于
用户回答回答于

我知道了,我需要用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))

扫码关注云+社区

领取腾讯云代金券