鏈?zhǔn)骄幊毯秃瘮?shù)式編程簡(jiǎn)單理解

Masnory這個(gè)第三方庫(kù)大家應(yīng)該都見(jiàn)過(guò),但是在我們經(jīng)常這樣寫(xiě)make.centerY.equalTo(self.view).offset(100), offset(100) 的時(shí)候有沒(méi)有感到奇怪,為什么可以這樣寫(xiě),接下來(lái)就引出了我們今天談?wù)摰脑掝}:鏈?zhǔn)骄幊毯秃瘮?shù)式編程
函數(shù)式編程Functional Programming,簡(jiǎn)寫(xiě) FP,使用特點(diǎn),將局部小的邏輯計(jì)算封裝為一個(gè)個(gè)小的函數(shù)體,在實(shí)際應(yīng)用中將這些小的函數(shù)體 自由組合,可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值),函數(shù)式編程的基礎(chǔ)是 block/閉包
主要的使用地方:

  • 自己封裝框架!
  1. 閱讀其他人的框架!

我們先看一下經(jīng)典Masnory寫(xiě)法

653D4EE3-C48E-4A22-8816-DBC377783CED.png

我們都知道在OC中用小括號(hào) ()引用的都是函數(shù),用中括號(hào) []引用的都是方法,但是在 OC 中什么時(shí)候會(huì)用到 () -> 執(zhí)行 block 需要 ()

接下來(lái),我們來(lái)一步一步的探索

1、鏈?zhǔn)骄幊?/h4>

Dog類(lèi)中創(chuàng)建兩個(gè)方法

8ACA6511-37A7-4352-97CC-8BB34CCB3FC4.png

我們?cè)?code>Dog類(lèi)中寫(xiě)兩個(gè)方法,分別是- (void)eat;,- (void)barks;,然后在 .m中實(shí)現(xiàn)方法。
我們?cè)趘iewController里面調(diào)用的方式是怎么樣的呢?

Dog *dog = [[Dog alloc]init];
 [dog eat];
  [dog barks];

但是我們想要實(shí)現(xiàn)的是這樣的調(diào)用方式[[dog eat] barks];,因?yàn)檫@樣我們才能實(shí)現(xiàn)我們的聯(lián)式編程。

解決辦法:eat方法之行完畢后,需要返回 Dog 對(duì)象,這樣就可以實(shí)現(xiàn)函數(shù)式編程了

在.m中,重新寫(xiě)兩個(gè)方法,我們來(lái)看一下實(shí)現(xiàn)過(guò)程

E5C312FC-135D-427D-8051-883FFB93C1D2.png

然后我們看一下在viewController調(diào)用以后實(shí)現(xiàn)的結(jié)果吧


76D21EEE-64F7-414E-B9D3-8E9F211554BD.png
可以看出,我們鏈?zhǔn)骄幊桃呀?jīng)實(shí)現(xiàn),但是我們最終想要的是函數(shù)式編程

2、函數(shù)式編程

熟悉Block用法的同學(xué)都知道,在返回值是Block類(lèi)型的時(shí)候,我們可以得到這種類(lèi)型的表達(dá)式dog.barks().barks().eat().barks();

我們?cè)?m中的實(shí)現(xiàn)

897F90D1-98F1-4ED5-AE2C-4F636269328B.png
重點(diǎn)

這樣寫(xiě)的原因:返回值是Block,我們可以寫(xiě)成函數(shù)式編程dog.eat2(),但是當(dāng)我們想要寫(xiě)成dog.eat2().eat2().barks2()這個(gè)樣式的時(shí)候,我們需要一個(gè)Dog返回值。

我們來(lái)看一下調(diào)用方法

A05F5033-613F-4388-AB4B-63BB8031F87F.png

這個(gè)時(shí)候,我們想要的結(jié)果就基本實(shí)現(xiàn)了,如果需要傳值,那么只需要寫(xiě)一個(gè)帶參數(shù)的block就行啦

我是一個(gè)小小白,這是我關(guān)于函數(shù)式編程和鏈?zhǔn)骄幊痰囊稽c(diǎn)點(diǎn)理解,哪位同學(xué)有什么好的建議可以跟我說(shuō)哦
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容