使用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技术文大盘点 | 打包过去,
- 下一篇: 巅峰对决!Spring Boot VS