- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在读 Enrico Buonanno 写的一本名为《C# 函数式编程》的书
public static Validator<T> FailFast<T>
(IEnumerable<Validator<T>> validators)
=> t
=> validators.Aggregate(Valid(t), (acc, validator) => acc.Bind(_ => validator(t)));
上面代码的原文是:
The fail-fast strategy is easier to implement: Every validator returns a Validation, and Validation exposes a Bind function that only applies the bound function if the state is Valid (just like Option and Either), so we can use Aggregate to traverse the list of validators and Bind each validator to the running result.
The FailFast function takes a list of Validators and returns a Validator: a function that expects an object of type T to validate. On receiving the valid t, it traverses the list of validators using Valid(t) as accumulator (if the list of validators is empty, then t is valid) and applies each validator in the list to the accumulator with Bind.
有三个 => 标志。这让我很难很好地理解代码。有谁熟悉 => 运算符并且可以用简单的英语解释它吗?非常感谢。
我还在文档中检查了 => 运算符。 https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/lambda-operator但文档中的demo并不像上面的代码那么复杂。
最佳答案
这里的 =>
意味着不同的东西,但一般来说,每一个都表示一个 lambda 匿名函数(带有 opt.closure),它被传递到某处 - 通常作为函数调用中的参数。
因此,从明显的大块代码(例如类和顶级方法)开始,找到指示函数调用的强制 ()
,这可能会更容易掌握。
First => 是方法体 (FailFast) 的简写形式,用于在小方法中跳过编写 { }
以提高“可读性”(此处:值得怀疑)。
第二个 => 是一个 lambda,创建为 FailFast 的返回值。
第三个 => 是一个 lambda,作为参数传递给 Aggregate()。
第四个 => 是一个 lambda,作为参数传递给 Bind()。
添加一些括号并添加顶级函数括号以使其更加明显:
public static Validator<T> FailFast<T>(IEnumerable<Validator<T>> validators)
{
return t => validators.Aggregate(Valid(t), ..secondparam..);
}
第二个参数是:
(acc, validator) => acc.Bind(...anotherparam...)
另一个参数是:
_ => validator(t)
其中 t
来自 return t=>
中的 lambda 范围。
关于c# - 我们如何在 C# 中解释 => Something => Something2 => Something3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72143500/
此处给出了基本的 Watir WebDriver 命令: http://watirwebdriver.com/web-elements/ 在大多数情况下,作者使用 :something => 'som
这里给出了基本的 Watir WebDriver 命令: http://watirwebdriver.com/web-elements/ 在大多数情况下,作者使用:something => 'some
我可以发誓我看到一个对象是以这种方式创建的。 somethingelse 有什么作用? 最佳答案 从字面上看,可能类 JSomething 有一个名为 somethingelse 的字段,类型为 JS
我正在阅读一些代码,我看到了一个如下所示的比较: a = b = c 看到在 Javascript 中搜索相等或比较如何产生补救结果,有人愿意解释发生了什么吗? 编辑:这些都是我们在这里讨论的所有对象
这个问题在这里已经有了答案: Is there a "null coalescing" operator in JavaScript? (19 个回答) 关闭 4 年前。 快速提问。我可以用更短的方
我正在尝试为我的网上商店做一个过滤器。我有以下查询 $column = mysqli_query($link, "SELECT brand FROM shields WHERE brand=".$br
我正在尝试将 json 文件映射到 mysql 数据库,请参阅 undefined index Name对于代码 我认为的问题是第三个条目中的任何一个元素都没有值,但有一个名为 aws:autosca
这个问题已经有答案了: Question mark and colon in JavaScript (8 个回答) 已关闭 5 年前。 我从 https://github.com/andrewgodw
我们知道编程语言中的后增量和前增量。据我所知,后增量意味着为下一条语句增加值。所以,something++ 等同于 something = something + 1,不是吗? 但是当 somethi
我有两个结构非常相似的表。 Universidades nombre | contenido | becas | fotos etc etc etc Internados nombre | todo
所以我有3张 table , Companies (company_id, company_name) Stock_Exchanges(stock_exchange_id, stock_exchang
我刚刚开始浏览 backbone fundamentals并且不太明白这里发生了什么: this.$input = this.$('#new-todo'); 有人可以给我概述/分割这实际上是做什么的吗
/*/ comment here do some thing. /*/ do some thing. //*/ 为什么人们会这样写代码?这是一个好的做法吗? 最佳答案 它通常只在暂时测试某些东西时使用
我正在查看一些微 Controller C 头文件,并且有这样的代码: #define OSCCONL OSCCONL extern volatile uint8_t OSCCONL __attrib
在 :contains jquery 调用中实现 OR 语句的最佳方法是什么? 谢谢 最佳答案 唯一的办法就是放两个 together : $('a:contains(b), a:contains(c
我有几个表需要连接。这些表是: 玩家 名字 姓氏 性别 location_id (其他不相关的列) 和 score_entries 得分 日期时间 玩家编号 (其他不相关的列) 我需要根据 playe
这个问题已经有答案了: Difference between single quotes and double quotes in Javascript [duplicate] (6 个回答) 已关闭
这是一段代码: if resp.email is None or resp.email == "": 我认为以下内容更清楚: if not resp.email: 第一个选项比第二个选项有什么优势吗?
我遇到了 this answer张贴者建议 的简写 if(typeof MyNamespace === 'undefined'){ var MyNamespace = {}; } 是 var
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
我是一名优秀的程序员,十分优秀!