处理 Scalaz6 验证列表

2024-04-06

在 Scalaz6 中是否有一种惯用的方法来处理验证集合?

val results:Seq[Validation[A,B]]
val exceptions = results.collect{case Failure(exception)=>exception}
exceptions.foreach{logger.error("Error when starting up ccxy gottware",_)}
val success = results.collect{case Success(data)=>data}
success.foreach {data => data.push}
if (exceptions.isEmpty)
   containers.foreach( _.start())

我可以考虑在循环结果时使用折叠,但是最终测试怎么样?


使用验证列表的常用方法是使用sequence将列表变成Validation[A, List[B]],这将为空(即Failure)如果一路上有任何错误。

测序Validation累积错误(与Either,立即失败)在左手类型的半群中。这就是为什么你经常看到ValidationNEL(其中NEL代表NonEmptyList)而不是简单地使用Validation。例如,如果您有以下结果类型:

import scalaz._, Scalaz._

type ExceptionsOr[A] = ValidationNEL[Exception, A]

一些结果:

val results: Seq[ExceptionsOr[Int]] = Seq(
  "13".parseInt.liftFailNel, "42".parseInt.liftFailNel
)

测序将为您提供以下信息:

scala> results.sequence
res0: ExceptionsOr[Seq[Int]] = Success(List(13, 42))

另一方面,如果我们遇到这样的错误:

val results: Seq[ExceptionsOr[Int]] = Seq(
  "13".parseInt.liftFailNel, "a".parseInt.liftFailNel, "b".parseInt.liftFailNel
)

我们最终会得到一个Failure(请注意,我已重新格式化输出以使其在此处清晰可见):

scala> results.sequence
res1: ExceptionsOr[Seq[Int]] = Failure(
  NonEmptyList(
    java.lang.NumberFormatException: For input string: "a",
    java.lang.NumberFormatException: For input string: "b"
  )
)

所以在你的情况下你会写这样的东西:

val results: Seq[ValidationNEL[A, B]]

results.sequence match {
  case Success(xs) => xs.foreach(_.push); containers.foreach(_.start())
  case Failure(exceptions) => exceptions.foreach(
    logger.error("Error when starting up ccxy gottware", _)
  )
}

看我的回答here https://stackoverflow.com/a/12358892/334519 and here https://stackoverflow.com/a/12309023/334519有关更多详细信息sequence以及关于Validation更普遍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 Scalaz6 验证列表 的相关文章

  • Scala 除以零会产生不同的结果

    我对 Scala 如何处理除以零感到困惑 这是 REPL 代码片段 scala gt 1 0 java lang ArithmeticException by zero 33 elided scala gt 1 toDouble 0 toD
  • 具有多个验证组的 Page_ClientValidate() - 如何同时显示多个摘要?

    ASP NET 2 0 假设我有两个验证组 valGrpOne 和 valGrpTwo 以及两个验证摘要 valSummOne 和 valSummTwo 分解部分的原因纯粹是为了美观 一个提交按钮会触发对两组的验证 现在我想触发客户端验证
  • 在 Java 中使用 Scala 常量

    我目前正在评估 Scala 的未来项目 并发现了一些奇怪的事情 我在 JSP 中为我们创建了以下常量 val FORMATED TIME formatedTime 但这没有用 经过一番尝试后 我决定反编译以了解其真相 private fin
  • Playframework 2.0 在视图模板中定义函数

    我正在开发一个使用 PlayFramework 2 0 的项目 在阅读了一些 scala 之后 我想在视图模板中嵌入一些动态代码 所以 我做了以下事情 def getMystring sequence Int if patternForm
  • 在 MATLAB 中验证输入的最佳实践

    在验证 MATLAB 函数中的输入时 什么时候使用 inputParser 比使用断言更好 或者还有其他更好的工具可用吗 我个人发现使用 inputParser 不必要地复杂 对于 Matlab 始终需要检查 3 项内容 存在 类型和范围
  • 有没有好的 Clojure 基准测试?

    Edit Clojure 基准测试已达到基准游戏 http benchmarksgame alioth debian org u64q clojure html 我已经制作了这个问题社区维基并邀请其他人保持更新 有人知道 Clojure 性
  • JavaScript 正则表达式否定精确的字符串匹配

    HTML JavaScript 中有没有办法编写正则表达式来否定精确的字符串匹配 我想确保输入不等于 foo 仅有的 foo 验证必须失败 但是 fooo 必须被允许 换句话说 我正在寻找这个正则表达式的否定
  • ckeditor 数据未通过 jQuery 验证进行验证

    我知道有很多关于此的问题 但我无法让它在我的一生中发挥作用 我尝试了几种解决方案 包括this http devlog waltercruz com usando ckeditor e jquery validate juntos 第二个答
  • 为什么我可以使用 Scala REPL 中的 Java 库,但不能使用脚本中的 Java 库?

    我正在开发一个使用 Joda Time 的 Scala 脚本 直到今天 这一切都运行良好 不知怎的 有些东西发生了变化 它不再起作用了 这有效 scala cp lib Welcome to Scala version 2 9 1 fina
  • Java Spring Rest 验证配置属性访问

    我有一个 Spring JSON RestAPI 它使用注释驱动的输入验证 Valid 当我尝试验证另一个对象内的对象时 出现以下错误 java lang IllegalStateException JSR 303 validated pr
  • 具有动态命名参数的 Scala 案例类副本

    对于具有参数数量的 scala 案例类 21 e g case class Car type String brand String door Int 其中类型 吉普车 品牌 丰田 门 4 etc 还有一个复制方法允许使用命名参数覆盖 Ca
  • 如何通过 Scala REPL 使用第三方库?

    我已经下载了Algebird我想尝试一些事情Scala 解释器使用这个库 我该如何实现这一目标 当然 您可以使用 scala cp 无论如何并手动管理您的依赖项 但这变得非常乏味 尤其是当您有多个依赖项时 更灵活的方法是使用sbt http
  • 在 Play 2 模板中格式化双精度的正确方法是什么

    这是我的 Play 2 模板的缩写代码 variable com mypackage Variable div class statsbody div class statsform div div
  • 手动排除sbt中的一些测试类

    我通常在 CI 中执行以下命令 清理更新编译测试发布 但是 我想从 sbt 命令行中排除 1 个 或几个 测试类 我怎样才能做到这一点 我不想更改我的代码以使用忽略等 两种可能的选择 test only See http www scala
  • 在 Spark 中将流式 XML 转换为 JSON

    我是 Spark 新手 正在开发一个简单的应用程序 将从 Kafka 接收的 XML 流转换为 JSON 格式 Using 火花2 4 5 斯卡拉 2 11 12 在我的用例中 kafka 流采用 xml 格式 以下是我尝试过的代码 val
  • 如何列出所有 sbt 依赖项?

    我需要列出所有 sbt 依赖项 以便检查是否已存在 debian 软件包 我还注意到有一个 DEB 包 http www scala sbt org 0 13 tutorial Installing sbt on Linux html但似乎
  • 用 HashMap[Int, Vector[Int]] (Scala) 表示图(邻接列表)?

    我想知道如何 如果可能的话 我可以通过以下方式制作 可变 图的邻接列表表示HashMap Int Vector Int HashMap当然是可变的 目前我将其设置为HashMap Int ArrayBuffer Int 但我可以更改 Arr
  • laravel 正则表达式验证不起作用

    我刚刚开始使用 laravel 正在努力验证我的表单之一中的文本区域 文本区域用于用户简介 因此我只想允许使用字母 数字 空格和以下字符 这就是我所拥有的 validator Validator make Input all array b
  • 最小有效 JSON 是多少?

    我仔细阅读了 JSON 描述http json org http json org 但我不确定我是否知道这个简单问题的答案 最小可能的有效 JSON 字符串是什么 string 该字符串是有效的 JSON 吗 42简单的数字是有效的 JSO
  • 如何在 akka actor 中测试公共方法?

    我有一个 akka 演员 class MyActor extends Actor def recieve def getCount id String Int do a lot of stuff proccess id do more st

随机推荐

  • 从文本文件的行中提取数据

    我需要从文本文件的行中提取数据 数据是姓名和评分信息 格式如下 Shyvana 12 4 5 Loss 2012 11 22 Fizz 12 4 5 Win 2012 11 22 Miss Fortune 12 4 3 Win 2012 1
  • insertMany 与 Mongoose 中的 collection.insert 有何不同?

    我四处寻找使用 Mongoose 将大量文档插入 MongoDB 的正确解决方案 我当前的解决方案如下所示 MongoClient saveData function RecordModel data priority SCHID call
  • 在 GWT 中创建流体面板来填充页面?

    我希望 GWT 中的面板能够填充页面 而无需实际设置大小 有没有办法做到这一点 目前我有以下内容 public class Main implements EntryPoint public void onModuleLoad Horizo
  • T4MVC 当前上下文隐含的可选参数值

    我注意到 T4MVC 存在一些奇怪的行为 具体来说 我尝试为可选参数值为 null 的操作构建 ActionLink 使用 HtmlHelper 这在大多数情况下都工作得很好 但是 如果当前路由与正在为其构建 ActionLink 的路由相
  • 如何使用助记词创建Web3py帐户

    我正在使用 web3 制作自己的桌面 BSC 钱包 目前我正在使用 private key private key account w3 eth account privateKeyToAccount private key 但我想使用助记
  • 如何在 googlemaps url 中设置航点

    我有一个带有地图的网站 我有一个文本字段 在其中输入我想要前往已设置的特定目的地的城市名称 为了到达这个目的地 我在代码中硬编码了路径点 所有这些都很好用 我现在有一个按钮 单击该按钮会给我指示 文本格式 当我单击另一个按钮时 我会得到一个
  • 如何向 NSTableView 添加页脚视图?

    看起来NSTableView没有相当于UITableView s tableFooterView财产 在 Cocoa 中将页脚视图添加到表格视图的首选方法是什么 NSTableView 没有像 UITableView 或 NSCollect
  • laravel 5.7 中类不存在反射异常错误

    我的 api php Route get getProducts ProductController getProducts 产品控制器 php
  • ASP.NET Ajax 工具包滑块手柄显示损坏的图像

    使用已经运行多年的 ASP NET 4 5 Web Forms 项目 出现了一个新问题 ASP NET Ajax Control Toolkit Slider 停止渲染图像 它是一个损坏的图像符号 通常在 句柄 处渲染 这只发生在 IE11
  • “一股烟雾”效果 javascript 精灵动画

    此代码和动画在 jQuery 1 4 4 及更低版本上完美运行 但不适用于更高版本 任何人都可以阐明这个问题并帮助开发一个适用于最新 jQuery 的版本 我在下面提供了一个小提琴 http jsfiddle net Y7Ek4 10 ht
  • grep 在 R 中固定 =T 的字符串开头?

    如何 grep 与fixed T 但仅在字符串的开头 grep a c a b cac sss ca f fixed T 1 4 我只想得到第一次出现的结果 编辑 要匹配的字符串事先未知 可以是任何内容 A 只是为了举例 Thanks 编辑
  • Android Java rxjava 线程抓取网页

    我必须抓取一个网页 我必须获取所有具有data component type等于s search result并将它们放入PC类型的ArrayList中 它具有一些属性 但我不知道如何使用 Retrofit 进行解析 有人可以帮我吗 RxJ
  • 柯里化和部分应用有什么区别?

    我经常在互联网上看到各种抱怨 认为其他人的柯里化示例不是柯里化 而实际上只是部分应用 我还没有找到关于什么是部分应用或者它与柯里化有何不同的合理解释 似乎存在普遍的混乱 等效的示例在某些地方被描述为柯里化 而在其他地方则被描述为部分应用 有
  • 雄辩的push()和save()区别

    我读过关于 eloquent 的 laravel 4 文档 并且对 Push 部分很感兴趣 它说 有时您可能不仅希望保存模型 还希望保存其所有关系 为此 您可以使用推送方法 保存模型和关系 user gt push 请参阅此处的链接 htt
  • Maven - 在当前项目中找不到前缀“wildfly”的插件

    我正在使用 Wildfly 8 我需要使用 JSR 352 中的 java 批处理处理器 我从以下位置下载了示例https github com javaee samples javaee7 samples https github com
  • 通过 BASH 将空格替换为下划线

    假设我有一个字符串 str 我希望编辑 str 使其中的所有空格都替换为下划线 Example a hello world 我想要的最终输出 echo a to be 你好世界 您可以尝试以下操作 str str
  • 如何在 VScode 中使用带有 R 内核的 Jupyter Notebook?

    现在我可以在 Web 浏览器中使用带有 R kernal 的 jupyter lab 并使用 VS Code 使用 python kernal 编辑 jupyter Notebook 代码 是否可以使用 Jupyter Notebook 模
  • Django 管理加载没有 CSS

    我创建了一个新的 Django 应用程序 我注意到它的管理页面加载时没有 CSS 我设置了STATIC URL和STATIC ROOT在settings py中根据this https stackoverflow com questions
  • SQL Server中模拟Oracle的CONNECT BY PRIOR

    如何在SQL Server 2000 2005 2008中获得Oracle的CONNECT BY PRIOR功能 实现递归查询的 SQL 标准方法 例如实现的通过 IBM DB2 和SQL服务器 http msdn microsoft co
  • 处理 Scalaz6 验证列表

    在 Scalaz6 中是否有一种惯用的方法来处理验证集合 val results Seq Validation A B val exceptions results collect case Failure exception gt exc