OC 函數(shù)式編程和鏈?zhǔn)骄幊?/h2>

函數(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))

    1. 新建一個(gè) NSString 分類,分類代碼如下:
    • .h 文件
    /// 在字符串的末尾附加另外一個(gè)字符串
    - (NSString *(^)(NSString *string))yxc_appendString;    
    
    • .m 文件
    /// 在字符串的末尾附加另外一個(gè)字符串
    - (NSString * _Nonnull (^)(NSString * _Nonnull))yxc_appendString {
        
        return ^(NSString *string) {
            
            return [self stringByAppendingString:string];
        };
    }
    
    1. 進(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 方法。下面直接看使用方式:

OC 鏈?zhǔn)骄幊痰氖褂?/div>

在這里,拼接完 的使用 這個(gè)字符串的時(shí)候,繼續(xù)直接拼接 ,iOS 鏈?zhǔn)骄幊痰氖褂?/code>,最后結(jié)果也如預(yù)期結(jié)果。

以上就是 函數(shù)編程鏈?zhǔn)骄幊?/strong> 的簡(jiǎn)單使用。

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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