我正在读 Enrico Buonanno 写的一本名为《C# 函数式编程》的书
public static Validator<T> FailFast<T>
(IEnumerable<Validator<T>> validators)
=> t
=> validators.Aggregate(Valid(t), (acc, validator) => acc.Bind(_ => validator(t)));
Run Code Online (Sandbox Code Playgroud)
上面代码的原文是:
fail-fast 策略更容易实现:每个验证器都会返回一个 Validation,而 Validation 会暴露一个 Bind 函数,只有当状态为 Valid 时才应用绑定函数(就像 Option 和 Either),因此我们可以使用 Aggregate 来遍历列表验证器并将每个验证器绑定到运行结果。
FailFast 函数接受验证器列表并返回一个验证器:一个期望 T 类型的对象进行验证的函数。收到有效的 t 后,它使用 Valid(t) 作为累加器遍历验证器列表(如果验证器列表为空,则 t 有效),并使用 Bind 将列表中的每个验证器应用到累加器。
一共有三个 => 符号。这让我很难很好地理解代码。有谁熟悉 => 运算符并且可以用简单的英语解释它吗?多谢。
我还检查了文档中的 => 运算符。 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-operator但文档中的演示并不像上面的代码那么复杂。