美文网首页
链式编程

链式编程

作者: CowboyBebop | 来源:发表于2016-06-14 00:16 被阅读28次

模仿masonry写的链式编程的Demo。

任何类都具有计算的功能。
1,首先给N�Sobject 添加个分类:
#import <Foundation/Foundation.h>
#import "CaculatorManager.h"
@interface NSObject (CasulatorMarker)
+(int)zdq_caculator:(void(^)(CaculatorManager * mager))block;
@end
2,方法的实现:

+(int)zdq_caculator:(void (^)(CaculatorManager *))block
{
    NSLog(@"mager = %@",block);
    //创建计算管理者
    CaculatorManager * mag = [CaculatorManager new];
    //调用block,进行计算
    block(mag);
    //返回计算的结果。
    return mag.result;
}

3,创建计算管理者,用来管理所有计算:

#import <Foundation/Foundation.h>

@interface CaculatorManager : NSObject
//result:用来保存计算结果。
@property (nonatomic,assign)int result;
//加法
-(CaculatorManager *(^)(int))add;
//减法
-(CaculatorManager *(^)(int))sub;

@end

4,方法的实现:

-(CaculatorManager *(^)(int))add
{
    return ^CaculatorManager *(int a){
    
    self.result += a;
    NSLog(@"加法 %s",__func__);
    return  self;
    };
}

-(CaculatorManager *(^)(int))sub
{
    return ^CaculatorManager * (int a){
    
    self.result -= a;
    NSLog(@"减法 %s",__func__);

    return self;
    };
}

5,方法的调用:

- (void)viewDidLoad {
    [super viewDidLoad];

     int result = [NSObject zdq_caculator:^(CaculatorManager *mager) {
      NSLog(@"mager = %@",mager);
      mager.add(3).add(8).sub(4).sub(1);
    }];
}

6,链式编程思想:

1,每一个操作都返回block,
2,给所有类提供一个计算方法zdq_caculator
3,创建计算制造者,计算制造者提供了很多方法计算,每个计算方法,方法不需要参数,但是必须返回block,每个block需要传入一个参数,计算什么值。
4,传入block,block用于把所有的计算保存到计算制造者中
5,执行block,.把计算制造者计算的值,返回出去。

7,

这个方法如果一般来写:
  mager.add(3).add(8).sub(4).sub(1);

   [[[[mager add:3] add:8] sub:4] sub:1];

  区别就是定义的把block作为返回值,并且block的返回值是计算管理者,这样才能继续调用下去。

相关文章

  • jQuery 链式编程

    jQuery 链式编程 链式编程原理 链式编程代码示例 隐式迭代

  • 链式编程思想

    链式编程思想 链式编程思想

  • iOS 链式编程

    链式编程 主要介绍链式编程原理,以及如何创建链式编程 编程范式 在介绍链式编程之前,首先来了解下什么是编程范式。 ...

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

  • 一、链式编程思想、响应式编程思想和函数式编程

    1. 链式编程思想 链式编程思想的核心就是方法的返回值必须是Block,Masonry是链式编程思想应用的代表。 ...

  • 链式编程和函数式编程的简单理解

    链式编程 此前看到SnipKit中运用了很多链式编程的代码,感觉非常好用:例如: //此段就是链式编程的典型代码m...

  • 编程思想-链式编程

    编程思想-链式编程 链式编程(链式调用)的主要表现是支持点语法结构的代码,代表库可以参照 Masonry 或 Sn...

  • 链式编程

    链式编程

  • iOS 链式编程

    之前看到 Masonry 是使用链式编程,感觉很酷,自己简单的写了一个链式编程的示例! 首先简单的来说一下链式编程...

网友评论

      本文标题:链式编程

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