链式编程初探

96
大慈大悲大熊猫
2015.09.29 14:18* 字数 256

前言

最近用了下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.新建类。


屏幕快照 2015-09-29 下午2.06.44.png

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);
    }];

后记

非常简单的代码,初步的学习了下链式编程,感觉这种编程方式很爽,分享给大家。

iOS开发日记
Web note ad 1