scala - Scala-Cats :- 是否可以合并来自不同 NonEmptyLists 的错误?
问题描述
是否有可能使用多个变量组合不同的错误NonEmptyList
type ValidationResult[A] = ValidatedNel[String, A]
def throwErrorsWhenNumberIsLessThan6(x:Int):ValidationResult[Int] = if(x<6) s"$x !> 6".invalidNel else (x+6).validNel
def throwErrorsWhenStringLengthIsLessThan6(x:String):ValidationResult[String] = if(x.length<6) s"$x length > 6".invalidNel else (x+" OK!!! ").validNel
val ints = Range.apply(1,10).map(throwErrorsWhenNumberIsLessThan6).toList
val strings = Range.apply(1,10).map(e => throwErrorsWhenStringLengthIsLessThan6(e.toString)).toList
有没有办法结合所有可用的错误ints
和strings
?
假设ints
and将strings
在NonEmptyList
.
解决方案
这对我有用
type ValidationResult[A] = ValidatedNel[String, A]
def throwErrorsWhenNumberIsLessThan6(x:Int):ValidationResult[Int] = if(x<6) s"$x !> 6".invalidNel else (x+6).validNel
def throwErrorsWhenStringLengthIsLessThan6(x:String):ValidationResult[String] = if(x.length<6) s"$x length > 6".invalidNel else (x+" OK!!! ").validNel
val ints = Range.apply(0,2).map(throwErrorsWhenNumberIsLessThan6).toList
val strings = Range.apply(0,2).map(e => throwErrorsWhenStringLengthIsLessThan6(e.toString+"KK")).toList
ints.filter(_.isInvalid).:::(strings.filter(_.isInvalid))
//List(Invalid(NonEmptyList(0KK length > 6)), Invalid(NonEmptyList(1KK length > 6)), Invalid(NonEmptyList(0 !> 6)), Invalid(NonEmptyList(1 !> 6)))
推荐阅读
- python - TensorFlow:如何在 SetShapeFn([](::tensorflow::shape_inference::InferenceContext* c) 中定义输出形状
- ios - 谷歌地图原始标记图像与所选标记重叠
- cross-browser - 渐进式网络应用程序在 Firefox 中离线工作,但在 chrome 中不能,原因?网络服务器问题?
- reactjs - React Router v4 嵌套路由不适用于 webpack-dev-server
- javascript - 从外部控制台在 Chrome 上运行 Javascript
- ios - 如何使用 NS_ENUM
- android - 如何意外恢复存档的动态链接?
- swiftui - SwiftUI - 获取孩子的大小?
- groovy - 如何使用脚本中的地址获取节点的位置?
- android - 我们需要单独编写字符串名称资源标签吗?