我有关于Xor猫对象的这段代码
Xor.right(data).ensure(List(s"$name cannot be blank"))(_.nonEmpty)
Run Code Online (Sandbox Code Playgroud)
现在,因为Xor已被删除,我正在尝试使用Either对象编写类似的东西
Either.ensuring(name.nonEmpty, List(s"$name cannot be blank"))
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为确保的返回类型是 Either.type
我可以写一个if.但我想用猫结构进行验证.
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)
Run Code Online (Sandbox Code Playgroud)
使用猫,你可以使用ensure上Either,如果参数和缺乏钻营的顺序不是根据自己的喜好:
import cats.syntax.either._
scala> e.ensure("Must be non-empty")(_.nonEmpty)
res0: Either[String,List[Int]] = Right(List(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
717 次 |
| 最近记录: |