vavr 验证者的验证流

vavr Validation stream of validators

我有这样的代码:

  return validators
            .stream()
            .flatMap(v -> v.validate(scoreRequest).stream())
            .collect(toList());

每个验证器 return 有一个 List<String> 错误,如果列表为空则表示请求有效。

下面我要介绍一下vavr.Validator。每个 validator.validate 的新 return 类型现在是 Validation<List<String>,ScoreRequest>

如何像以前一样使用流合并每个验证器的输出?

您可以使用 sequence 来做到这一点。

因此,如果您的 validators 是一个 List<Validation<List<String>, ScoreRequest>>,将此函数应用于它会 return 一个 Validation<Seq<String>, Seq<ScoreRequest>>,这看起来与您想要的完全一样。我让您弄清楚将 Seq 转换回您想要的任何结构的管道。