美文网首页
链式编程与函数编程

链式编程与函数编程

作者: 醉叶惜秋 | 来源:发表于2017-09-01 16:13 被阅读5次

    1. 链式编程

    要实现的效果: make.left.equalTo(superview.mas_left)
    
    分析只有 block 可以用()调用方法. 所以 make.应该返回 block
    void(^block)() = ^{
        //code...
    };
    block();
    
    例如:
    self.test();
    - (void(^)())test{
        voie(^block)() = ^{
              //code...
         };
    }
    

    2. 函数式编程

    mgr.add(5).add(6).add(7);
    mgr.add 返回一个 block
    block返回 mgr 就可继续调用 block 了.
    

    例子:

    #import <Foundation/Foundation.h>
    
    @interface CaculatorManager : NSObject
    
    @property (nonatomic, assign)NSInteger result;
    
    
    - (CaculatorManager *)caculator : (NSInteger(^)(NSInteger result))block;
    
    - (void)log;
    
    @end
    
    #import "CaculatorManager.h"
    
    @implementation CaculatorManager
    
    - (CaculatorManager *)caculator:(NSInteger (^)(NSInteger))block{
        _result = block(_result);
        NSLog(@"%ld", _result);
        return  self;
    }
    
    - (void)log{
        NSLog(@"%ld", _result);
    }
    
    @end
    
    #import "ViewController.h"
    #import "CaculatorManager.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
     
        CaculatorManager *mgr = [[CaculatorManager alloc] init];
        [[mgr caculator:^NSInteger(NSInteger result) {
            
            result += 5;
            return result;
            
        }] log];
        
    }
    
    @end
    
    

    相关文章

      网友评论

          本文标题:链式编程与函数编程

          本文链接:https://www.haomeiwen.com/subject/hxckjxtx.html