【问题标题】:Scala cat library validation-Collect all invalid objectsScala猫库验证-收集所有无效对象
【发布时间】:2020-09-15 06:06:22
【问题描述】:

我是 scala 的新手。验证后是否可以收集所有无效对象的列表? 例如:有一个订单对象列表。经过验证,有些是有效的,有些是无效的。

请在猫图书馆有知识的人给我一个见解。

【问题讨论】:

  • 您想使用Validated。比如:rawData.traverse(validateFun)
  • “验证后”你说。所以如果你有一个List[Validated[?,?]],那么你可以对它进行分区:val (vld,invld) = validatedDataList.partition(_.isValid)

标签: scala functional-programming scala-cats


【解决方案1】:

给定Validated[E, A] 列表,您可以使用partitionBifold 将它们拆分为E 列表和A 列表:

import cats._, cats.data._ cats.implicits._

val validations:  List[Validated[String, Int]] =
    List(1.valid, "Err".invalid, 2.valid, "Also Err".invalid)

validations.partitionBifold(identity)
// == (List("Err", "Also Err"), List(1, 2))

这适用于任何Foldable 而不是List,以及任何有Bifoldable 实例的元素类型,例如Either 或元组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-01
    • 2018-06-23
    • 2013-12-22
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多