scalaz.Validation
据说比try
monad更强大,因为它可以累积错误。
有没有什么场合你可能会选择< code>Try而不是< code>scalaz。验证或< code>scalaz。\/?
支持<code>Try</code>的最重要论点是它在标准库中。它还用于标准库中,例如,您在Future
的onComplete中注册的回调函数必须是
Try
。它可能在未来的标准库中得到更广泛的使用。
它在标准库中这一事实也意味着它将为更多的人所熟悉。您可能会在更多使用的第三方库中找到它。当然,有时可能不允许您使用Scalaz(或任何其他依赖项),或者出于其他非常好的原因,您可能希望避免使用Scalax。
其他东西:我不记得上次我写一个左边没有< code>Throwable
的< code>\/是什么时候了(我有——只是我不经常这么做)。< code>Try将此功能嵌入其中,因此您不必担心编写别名或其他任何内容。
正如senia在上面的评论中指出的那样,偏向一个类似于两者之一的类型,但仍然使用“左”和“右”的语言(正如< code>\/所做的那样),这可能有点不直观。为什么< code>\/通过右侧绑定?因为确实如此,这就是原因。我个人并不觉得这种命名有什么不妥,但我可以理解为什么有些人会有异议。< code>Try通过让构造函数名清楚地指示它们的语义来避免这个问题:< code>Success和< code>Failure,而不是< code>Left和< code>Right或< code>-\/和< code>\/-。
既然我们已经找到了使用try
的完全肤浅和主观的原因,有些人可能只是认为\/
和-\/
和\/-
很难看。我通常不介意操作员繁重的代码,我发现输入和阅读混杂的斜线和破折号真的很不愉快。
因此,这些是一些支持尝试
的论据,根据要求,但我最后要说的是,我自己从不使用它。我并不特别关心它违反了monad定律的事实(尽管我可以理解为什么人们会这样做),但我确实发现\/
和Verify
不那么临时,更容易推理,我喜欢在单个框架中访问两者(当我想累积错误时进行验证
,当我需要一元测序时)。
。
我试图验证方法的参数是否为空,但我没有找到解决方案。。。 有人可以告诉我该怎么做吗? 我正在尝试这样的事情:
属性、设置器和getter的命名有什么规则吗?我有一个模型类,它具有属性,名为和setter和getter,但当尝试用Thymleaf验证输入以显示错误时,如果存在,它会崩溃 注意:属性工作正常 以下是我的代码片段: 模型 表单
“处理您的订单时出错” 我设置付款方式没有问题,但当我尝试使用authorize.net选项时,我得到一条弹出消息,上面写着“处理您的订单时出错”。订单不显示在后端,但付款被处理,我会收到一封确认电子邮件,上面有我的订单号。 我用Authorize.net检查了付款是否通过,信用卡是否有效,并且似乎没有问题,它去掉了问题可能是由于配置不良造成的选项。 下一个异常“zend_db_statement
本文向大家介绍Scala尝试,包括了Scala尝试的使用技巧和注意事项,需要的朋友参考一下 示例 使用尝试map,getOrElse并且flatMap: Try与模式匹配一起使用: