日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

使用C#体验函数式编程之——Currying(柯里化)

發(fā)布時(shí)間:2023/12/4 C# 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用C#体验函数式编程之——Currying(柯里化) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

上次,我們嘗試了函數(shù)式編程中的Partial application(局部應(yīng)用)。

Partial Application是函數(shù)式編程中一個(gè)很常見的模式,它通過(guò)固定一個(gè)函數(shù)的部分參數(shù),產(chǎn)生一個(gè)參數(shù)較少的函數(shù)。

今天,我們?cè)賮?lái)體驗(yàn)函數(shù)式編程另外一種模式,Currying(柯里化)。

Currying

Currying是將具有多個(gè)參數(shù)的函數(shù)拆分為一個(gè)參數(shù)函數(shù)的嵌套鏈的過(guò)程。因此,柯里化函數(shù)是一個(gè)函數(shù),它一次接受一個(gè)參數(shù),在每一步都返回一個(gè)新函數(shù)。

例如有一個(gè)函數(shù)f(a, b, c), 我們可以傳入?yún)?shù)a生成函數(shù)f_a,再傳入?yún)?shù)b生成函數(shù)f_ab,最后傳入?yún)?shù)c執(zhí)行函數(shù)。

調(diào)用同一個(gè)函數(shù),并且傳遞的參數(shù)絕大多數(shù)都是相同的,那么使用Currying處理過(guò)的函數(shù),則是一個(gè)很好的選擇。

那么,用C#怎么實(shí)現(xiàn)呢?

Demo

和上次一樣,我們引用nuget包Curryfy。

通過(guò)將Curry擴(kuò)展方法用于Func委托實(shí)現(xiàn)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

結(jié)論

Partial application和Currying的功能感覺有點(diǎn)相似,但是使用場(chǎng)景不同:

  • Partial application 主要用于減少參數(shù)輸入,實(shí)現(xiàn)默認(rèn)參數(shù)

  • Currying 主要用于函數(shù)組合,每次只接受一個(gè)參數(shù),實(shí)現(xiàn)f(g(x))的效果

總結(jié)

以上是生活随笔為你收集整理的使用C#体验函数式编程之——Currying(柯里化)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。