c# 函数式编程
文章平均质量分 94
c# 函数式编程
0neKing2017
这个作者很懒,什么都没留下…
展开
-
9. 无限循环
第三个选项是使用和。关于的事情是它们实际上不是数组,它们只是指向数据项的指针,以及如何获取下一个项的指令。在这种情况下,我们可以创建自己的 IEnumerable 接口实现,但具有我们自己的行为。在我们的 Monopoly 示例中,我们希望能够迭代,直到用户选择一种方法来越狱,或者掷出双数。我们实际上从外部世界开始使用,但。是位于幕后的类,实际上执行枚举工作。这就是我们需要开始的。了解其底层工作原理后,您可以看到如何在Enumerable中实现您想要的任何行为。如果您愿意,您可以像Enumerable。原创 2024-08-03 09:36:54 · 792 阅读 · 0 评论 -
8. 柯里化和部分应用
柯里化和部分应用是另外两个直接来自旧数学论文的函数式概念。前者与印度食物毫无关系,尽管它确实很美味,但它以杰出的美国数学家 Haskell Brooks Curry 的名字命名,有不少于三种编程语言以他的名字命名。柯里化源自 Haskell Curry 在组合逻辑方面的工作,它是现代函数式编程的基础之一。我不会给出枯燥的正式定义,而是通过示例进行解释。在这个例子中,我们期望答案是 300(即 100+200),事实确实如此。但是,如果我只提供一个参数会怎样?原创 2024-08-03 09:36:14 · 1000 阅读 · 0 评论 -
7.函数流
调用外部系统(无论是数据库、Web API 还是其他什么)绝对是一件痛苦的事情,不是吗?在使用数据之前(这是您正在编写的函数中最重要的部分),您必须:捕获并处理任何异常。可能是网络出现故障,或者数据库服务器离线?检查从数据库返回的内容是否为 NULL检查是否存在实际、合理的数据集,即使它不为 NULL。这些都是大量繁琐的样板代码,所有这些都会妨碍您的实际业务逻辑。原创 2024-08-03 09:35:25 · 406 阅读 · 0 评论 -
6.可区分联合
高阶函数这个名字对于一个非常简单的东西来说有点奇怪。事实上,如果你花了很多时间使用 LINQ,那么你可能已经使用它们一段时间了。传递到Where函数的是一个箭头表达式 - 这只是写出函数的简写。因此,这里,该函数已作为参数传递给另一个函数,并在该函数内部的其他地方执行。在这里,我们使用代码创建一个Func委托并将其作为另一个函数的返回类型返回,这次将在创建它的函数的某个外部使用。简而言之,高阶函数是作为变量传递的函数。这可以是另一个函数的返回类型或参数。原创 2024-08-03 09:34:45 · 410 阅读 · 0 评论 -
5.高阶函数
高阶函数这个名字对于一个非常简单的东西来说有点奇怪。事实上,如果你花了很多时间使用 LINQ,那么你可能已经使用它们一段时间了。传递到Where函数的是一个箭头表达式 - 这只是写出函数的简写。因此,这里,该函数已作为参数传递给另一个函数,并在该函数内部的其他地方执行。在这里,我们使用代码创建一个Func委托并将其作为另一个函数的返回类型返回,这次将在创建它的函数的某个外部使用。简而言之,高阶函数是作为变量传递的函数。这可以是另一个函数的返回类型或参数。原创 2024-08-03 09:33:31 · 351 阅读 · 0 评论 -
4. 用功能代码来巧干,而不是苦干
我们大多数人在编码时可能都使用过 Enumerable,但您是否知道,在表面之下有一个引擎,您可以访问它并使用它来创建各种有趣的自定义行为?使用自定义迭代器,当循环数据时需要更复杂的行为时,我们可以大幅减少所需的代码行数。但首先,有必要了解 Enumerable 在表面之下的工作原理。在 Enumerable 的表面之下有一个类,它是驱动 Enumeration 的引擎,它允许您使用 ForEach 循环遍历值。它被称为 Enumerator。Current:从可枚举对象中取出当前项。原创 2024-08-03 09:30:41 · 301 阅读 · 0 评论 -
3. C# 7 及更高版本中的函数式编码
在本章中,我们研究了自函数式编程开始集成到 C# 3 和 4 以来发布的所有 C# 功能。我们研究了它们是什么、如何使用它们以及为什么值得考虑。模式匹配,在 C# 中实现为 switch 语句的高级形式,允许简短而简单地编写非常强大的代码节省逻辑。我们看到了每个版本的 C# 都为开发人员贡献了更多的模式匹配功能。不变性,即在实例化变量后防止其被更改的能力。原创 2024-08-03 09:30:00 · 650 阅读 · 0 评论 -
2. 我们现在能做什么?
递归位于许多函数式迭代版本的背后。对于任何不知道的人来说,它是一个反复调用自身的函数,直到满足某些条件。它是一种非常强大的技术,但在 C# 中有一些限制需要牢记。如果开发不当,它会导致无限循环,直到用户终止应用程序或堆栈上所有可用空间都被消耗为止。正如流行的英国奇幻 RPG 游戏节目Knightmare的传奇地下城主 Treguard 所说的那样:“哦,真讨厌”。在 C# 中,与其他形式的迭代相比,它们往往会消耗大量内存。有办法解决这个问题,但这是另一章的主题。原创 2024-08-03 09:28:24 · 993 阅读 · 0 评论 -
1.函数式编程介绍
函数式编程中有几个基本概念,其中许多概念的名称相当晦涩,但其实并不难理解。我会尽量在这里简单地介绍它们。在使用 C# 进行函数式编程的这一激动人心的第一部分中,我们强大而令人敬畏的英雄——你——勇敢地了解了函数式编程到底是什么,以及为什么值得学习。不变性高阶函数表达式优于语句引用透明性递归模式识别无状态讨论了函数式编程最适合使用的领域,以及可能需要讨论是否以纯粹的形式使用它。我们还研究了使用函数式范式编写应用程序的诸多好处。原创 2024-08-03 09:26:30 · 547 阅读 · 0 评论