函數(shù)式編程 和 鏈?zhǔn)骄幊?/strong>,可能大家在日常開發(fā)中都有接觸過(guò),第三方框架 Masonry 就是利用了這個(gè)方式。
函數(shù)式編程
OC 中函數(shù)式編程是通過(guò) Block 的方式去實(shí)現(xiàn)的。下面,利用一個(gè)例子來(lái)講解 函數(shù)式編程。
要實(shí)現(xiàn)的功能:給一個(gè)字符串末尾拼接另外一個(gè)字符串(只是為了舉例,利用函數(shù)式編程來(lái)實(shí)現(xiàn))
-
- 新建一個(gè)
NSString分類,分類代碼如下:
- .h 文件
/// 在字符串的末尾附加另外一個(gè)字符串 - (NSString *(^)(NSString *string))yxc_appendString;- .m 文件
/// 在字符串的末尾附加另外一個(gè)字符串 - (NSString * _Nonnull (^)(NSString * _Nonnull))yxc_appendString { return ^(NSString *string) { return [self stringByAppendingString:string]; }; } - 新建一個(gè)
-
- 進(jìn)行調(diào)用
字符串拼接函數(shù)式編程的調(diào)用可以查看到結(jié)果,已經(jīng)將另外一個(gè)字符串拼接到一起了,看到這里,也許心中有疑問(wèn),為什么這個(gè)方法聲明和實(shí)現(xiàn)都沒有參數(shù),而在調(diào)用的時(shí)候卻傳了一個(gè)字符串過(guò)去?這是怎么做到的?
如果有這個(gè)疑問(wèn),并且百思不得其解的話,下面在調(diào)用的時(shí)候,換一種方式去調(diào)用這個(gè)方法,或許就會(huì)豁然開朗。
函數(shù)式編程實(shí)際的調(diào)用流程通過(guò)以上的方式調(diào)用,發(fā)現(xiàn)
string.yxc_appendString(@"的使用")實(shí)際上就是一個(gè)block的調(diào)用。因?yàn)?yxc_appendString方法返回的就是一個(gè)block,再加上直接調(diào)用就簡(jiǎn)寫成了這種方式。因?yàn)?yxc_appendString是一個(gè)方法,而且是一個(gè)無(wú)參數(shù)的方法的原因,導(dǎo)致在看到string.yxc_appendString(@"的使用")時(shí),第一反應(yīng)就是方法的調(diào)用,并且(@"的使用")是一個(gè)參數(shù)。但是實(shí)際上是因?yàn)?yxc_appendString方法的格式跟OC中的getter方法的格式是一樣,所以在這里直接使用點(diǎn)語(yǔ)法,調(diào)用這個(gè)方法。如果yxc_appendString添加了一個(gè)參數(shù)是無(wú)法用 點(diǎn)語(yǔ)法 的。
函數(shù)式編程 在 OC 的使用就是以上的方式,下面講解 鏈?zhǔn)骄幊?/strong> 的使用。
鏈?zhǔn)骄幊?/h3>
上面剛實(shí)現(xiàn)的 yxc_appendString 這個(gè)方法就已經(jīng)滿足了 鏈?zhǔn)骄幊?/strong>,因?yàn)檫@個(gè)方法 block 內(nèi)部返回的就是一個(gè) NSString 類型,所以可以繼續(xù)調(diào)用本身的 yxc_appendString 方法。下面直接看使用方式:

在這里,拼接完 的使用 這個(gè)字符串的時(shí)候,繼續(xù)直接拼接 ,iOS 鏈?zhǔn)骄幊痰氖褂?/code>,最后結(jié)果也如預(yù)期結(jié)果。
以上就是 函數(shù)編程 和 鏈?zhǔn)骄幊?/strong> 的簡(jiǎ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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

