gpt4 book ai didi

斯卡拉猫 : is there an ensure method on Either?

转载 作者:行者123 更新时间:2023-12-01 11:21:51 26 4
gpt4 key购买 nike

我在 Xor 上有这段代码猫的对象

Xor.right(data).ensure(List(s"$name cannot be blank"))(_.nonEmpty)

现在由于 Xor 已被删除,我正在尝试使用 Either 对象编写类似的东西
Either.ensuring(name.nonEmpty, List(s"$name cannot be blank"))

但这不起作用,因为 Ensure 的返回类型是 Either.type
我当然可以写一个如果。但我想用猫构造进行验证。

最佳答案

Xor已从猫中删除,因为 Either现在在 Scala 2.12 中偏右。您可以使用标准库 Either#filterOrElse ,它做同样的事情,但不是 curry :

val e: Either[String, List[Int]] = Right(List(1, 2, 3))
val e2: Either[String, List[Int]] = Right(List.empty[Int])

scala> e.filterOrElse(_.nonEmpty, "Must not be empty")
res2: scala.util.Either[String,List[Int]] = Right(List(1, 2, 3))

scala> e2.filterOrElse(_.nonEmpty, "Must not be empty")
res3: scala.util.Either[String,List[Int]] = Left(Must not be empty)

使用猫,可以使用 ensureEither ,如果参数的顺序和缺少柯里化(Currying)不符合您的喜好:
import cats.syntax.either._

scala> e.ensure("Must be non-empty")(_.nonEmpty)
res0: Either[String,List[Int]] = Right(List(1, 2, 3))

关于斯卡拉猫 : is there an ensure method on Either?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41411416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com