首页 > 解决方案 > Scala猫库验证-收集所有无效对象

问题描述

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

在猫图书馆有知识的人请给我一个洞察力。

标签: scalafunctional-programmingscala-cats

解决方案


给定一个列表Validated[E, A],您可以将它们拆分为一个列表E和一个Ausing列表partitionBifold

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而不是列表,以及任何有Bifoldable实例的元素类型,例如Either或元组。


推荐阅读