函数式编程(链式编程)

什么是函数式编程

像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);

引用:

iOS中的函数式编程 - 简书

iOS函数式编程和链式编程的实现 - 简书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值