近期函数式编程的思想都在慢慢普及,作为小白,也是一脸懵逼,什么是函数式编程,有什么用?
其实作为ios开发,masonry大家肯定都接触过跟使用过,其实里面使用的就是函数式编程的思想,是比较典型的例子,直接上代码了
[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()方法可以点出offset()的方法,这样两句代码,可以一句完成,在分析下面的代码,都柔和成一句代码完成了,如果分开写,也是可以达到效果,但是代码过于冗杂,所以函数式编程就用在里面了,那么如何实现函数式编程呢?我们首先来了解下链式编程,首先我创建一个Dog class.这个Dog有两个方法,eat和run的方法.
Dog类中的.m文件实现
Dog类中的.h文件
接下来是方法调用
调用的打印结果
从调用的方式来看,跟打印的结果,看似有点想函数式编程了,但还没达到我们想要的效果,上面的测试用,其实只是利用了返回结果是Dog类来调用方法而已,并无太多的实用性,接下来介绍下函数式编程。
同样是先新建一个Dog类
直接上代码
.h文件
.m实现文件
调用方式
打印结果
从调用的方法来看,是不是跟masonry一样了,可以有点类似点语法点出方法带上参数,总共打印了四次结果,从往常的调用方式来看,需要dog类分次调用running、eatting、bark、sharkTail这四个方法,现在一句话就完成了,其实原理比刚才那个链式编程来看,巧妙的利用block实现回调。
结论:从使用场景来看可以分为三种
(1)封装自己的方法
(2)查看别人写的封装方法,别以为这个没用,看不懂别人的代码,也你别想完美按需求在上面做精准改动。
(3)面试装逼加分