近期函數(shù)式編程的思想都在慢慢普及,作為小白,也是一臉懵逼,什么是函數(shù)式編程,有什么用?
其實(shí)作為ios開發(fā),masonry大家肯定都接觸過跟使用過,其實(shí)里面使用的就是函數(shù)式編程的思想,是比較典型的例子,直接上代碼了
[self.horViewmas_makeConstraints:^(MASConstraintMaker*make) {
make.top.equalTo(self.nameLb.mas_bottom).offset(5);
make.left.equalTo(self.iconView.mas_right).offset(10);
make.right.equalTo(self.contentView.mas_right).offset(-10);
make.height.equalTo(@1);
}];
在上面的block中,總共有四句代碼,其中e'qualTo()方法可以點(diǎn)出offset()的方法,這樣兩句代碼,可以一句完成,在分析下面的代碼,都柔和成一句代碼完成了,如果分開寫,也是可以達(dá)到效果,但是代碼過于冗雜,所以函數(shù)式編程就用在里面了,那么如何實(shí)現(xiàn)函數(shù)式編程呢?我們首先來了解下鏈?zhǔn)骄幊蹋紫任覄?chuàng)建一個(gè)Dog class.這個(gè)Dog有兩個(gè)方法,eat和run的方法.
Dog類中的.m文件實(shí)現(xiàn)
Dog類中的.h文件
接下來是方法調(diào)用
調(diào)用的打印結(jié)果
從調(diào)用的方式來看,跟打印的結(jié)果,看似有點(diǎn)想函數(shù)式編程了,但還沒達(dá)到我們想要的效果,上面的測(cè)試用,其實(shí)只是利用了返回結(jié)果是Dog類來調(diào)用方法而已,并無太多的實(shí)用性,接下來介紹下函數(shù)式編程。
同樣是先新建一個(gè)Dog類
直接上代碼
.h文件
.m實(shí)現(xiàn)文件
調(diào)用方式
打印結(jié)果
從調(diào)用的方法來看,是不是跟masonry一樣了,可以有點(diǎn)類似點(diǎn)語法點(diǎn)出方法帶上參數(shù),總共打印了四次結(jié)果,從往常的調(diào)用方式來看,需要dog類分次調(diào)用running、eatting、bark、sharkTail這四個(gè)方法,現(xiàn)在一句話就完成了,其實(shí)原理比剛才那個(gè)鏈?zhǔn)骄幊虂砜矗擅畹睦胋lock實(shí)現(xiàn)回調(diào)。
結(jié)論:從使用場(chǎng)景來看可以分為三種?
(1)封裝自己的方法
(2)查看別人寫的封裝方法,別以為這個(gè)沒用,看不懂別人的代碼,也你別想完美按需求在上面做精準(zhǔn)改動(dòng)。
(3)面試裝逼加分