前言
最近用了下masonry,看到许多如
make.top.equalTo(self.mas_topLayoutGuide);
make.left.equalTo(self.view);
make.right.equalTo(self.view);
make.height.equalTo(@40);
这样的代码,又通过几篇博客了解到这就是简单地链式编程,所以准备了解一下,并且在学习masonry框架前,也可以学习它的编程思想。
链式编程思想
是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。如a(1).b(2).c(3)
链式编程特点
方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)
实战
模仿masonry,写一个加法计算器,练习链式编程。
1.新建类。
2.在CaculatorMaker.h里定义四则运算
@interface CaculatorMaker : NSObject
@property (nonatomic, assign) int result;
- (CaculatorMaker *(^)(int))add;
- (CaculatorMaker *(^)(int))sub;
- (CaculatorMaker *(^)(int))multi;
- (CaculatorMaker *(^)(int))divide;
@end
3.在CaculatorMaker.m里实现
- (CaculatorMaker *(^)(int))add
{
return ^id(int x) {
self.result += x;
return self;
};
}
4.定义运算方法
@class CaculatorMaker;
@interface NSObject (Caculator)
+ (int)makeCaculators:(void(^)(CaculatorMaker *maker))caculatorMaker;
@end
5.实现
+ (int)makeCaculators:(void(^)(CaculatorMaker *maker))caculatorMaker
{
CaculatorMaker *maker = [[CaculatorMaker alloc]init];
caculatorMaker(maker);
return maker.result;
}
6.最后就能随意调用了
int result = [NSObject makeCaculators:^(CaculatorMaker *maker) {
maker.add(1).add(1).add(3).multi(3).sub(5).divide(2);
}];
后记
非常简单的代码,初步的学习了下链式编程,感觉这种编程方式很爽,分享给大家。