使用C#体验函数式编程之——Currying(柯里化)
生活随笔
收集整理的这篇文章主要介绍了
使用C#体验函数式编程之——Currying(柯里化)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
前言
上次,我们尝试了函数式编程中的Partial application(局部应用)。
Partial Application是函数式编程中一个很常见的模式,它通过固定一个函数的部分参数,产生一个参数较少的函数。
今天,我们再来体验函数式编程另外一种模式,Currying(柯里化)。
Currying
Currying是将具有多个参数的函数拆分为一个参数函数的嵌套链的过程。因此,柯里化函数是一个函数,它一次接受一个参数,在每一步都返回一个新函数。
例如有一个函数f(a, b, c), 我们可以传入参数a生成函数f_a,再传入参数b生成函数f_ab,最后传入参数c执行函数。
调用同一个函数,并且传递的参数绝大多数都是相同的,那么使用Currying处理过的函数,则是一个很好的选择。
那么,用C#怎么实现呢?
Demo
和上次一样,我们引用nuget包Curryfy。
通过将Curry扩展方法用于Func委托实现Currying。示例代码如下:
using static Curryfy.CurryExtensions;Func<int, int, int, int> add = (a, b, c) => a + b + c;var addCurried = add.Curry();var add1 = addCurried(1); var add4 = add1(3); var result = add4(5);Console.WriteLine(result); //9结论
Partial application和Currying的功能感觉有点相似,但是使用场景不同:
Partial application 主要用于减少参数输入,实现默认参数
Currying 主要用于函数组合,每次只接受一个参数,实现f(g(x))的效果
总结
以上是生活随笔为你收集整理的使用C#体验函数式编程之——Currying(柯里化)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 2021技术文大盘点 | 打包过去,
- 下一篇: 如何通过 C# 将文本变为声音 ?