什么是函数式编程
像masonry那样的写法就是函数式编程
make.centerY.equalTo(self.view).offset(100);
思路
1. 如果想要再去调用别的方法,那么就需要返回一个对象
2. 如果想要()执行,那么需要返回一个block
3. 如果想让返回的block再调用对象的方法,那么这个block就需要返回一个对象(即返回值为一个对象的block)
实践
@interface Person : NSObject
-(Person *(^)(void))runBlock;
-(Person *(^)(void))eatBlock;
-(Person *(^)(int))spendMoneyBlock;
@end
@implementation Person
-(Person * _Nonnull (^)(void))runBlock{
Person *(^block)(void) = ^{
NSLog(@"run");
return self;
};
return block;
}
-(Person * _Nonnull (^)(void))eatBlock{
Person *(^block)(void) = ^{
NSLog(@"eat");
return self;
};
return block;
}
-(Person * _Nonnull (^)(int))spendMoneyBlock{
Person*(^block)(int) = ^(int money){
NSLog(@"花了%d块钱",money);
return self;
};
return block;
}
@end
调用:
Person *p = [Person new];
p.runBlock().eatBlock().spendMoneyBlock(1);
引用: