【发布时间】:2017-05-03 10:12:03
【问题描述】:
在https://gist.github.com/satyagraha/897e427bfb5ed203e9d3054ac6705704 中,我发布了一个似乎合理的 Scala Cats 验证方案,但我还没有找到一个非常简洁的解决方案。
本质上,有一个两阶段验证,其中单个字段被验证,然后调用一个类构造函数,由于内部检查可能会抛出(通常这可能不在我的控制范围内更改,因此异常处理代码)。如果任何字段验证失败,我们希望不调用构造函数,但也希望将任何构造函数失败合并到最终结果中。 “快速失败”绝对适合两阶段检查。
这是一种flatMap 问题,cats.data.Validated 框架似乎通过cats.data.Validated#andThen 操作处理。但是,正如您在代码中看到的那样,我找不到一个特别巧妙的解决方案。 cats.syntax.CartesianBuilder 上可用的操作数量非常有限,我不清楚如何将其与 andThen 操作链接。
欢迎任何想法!注意有一个 Cats 问题 https://github.com/typelevel/cats/issues/1343 可能是相关的,不确定。
【问题讨论】:
标签: scala validation scala-cats