【iOS开发】链式编程

链式编程的特点

链式编程通过点语法连续调用函数,将一系列代码执行动作串联起来,让代码更加简洁, 可读性更强,不用单独一个一个的执行。

Objective-C和Swift代码写法上有些差别

Objective-C
对象方法的返回值是一个Block,在返回Block函数中做相应的逻辑处理并返回当前对象

Swift
对象方法的返回值是当前对象,需要操作的值以形参传入

OC版

CaculateMake 具体方法类

####CaculateMake.h 
#import <UIKit/UIKit.h>

@interface CaculateMake : NSObject

/** 结果 */
@property (nonatomic, assign) CGFloat result;

- (CaculateMake *(^)(CGFloat))add;

- (CaculateMake *(^)(CGFloat))sub;

@end


####CaculateMake.m
#import "CaculateMake.h"

@implementation CaculateMake

- (CaculateMake *(^)(CGFloat))add {
    return ^CaculateMake *(CGFloat value) {
        self.result += value;
        return self;
    };
}

- (CaculateMake *(^)(CGFloat))sub {
    return ^CaculateMake *(CGFloat value) {
        self.result -= value;
        return self;
    };
}

@end

点语法调用类

#import <UIKit/UIKit.h>
#import "CaculateMake.h"

@interface Caculate : NSObject

+ (CGFloat)caculate:(void(^)(CaculateMake *make))caculateBlock;

@end

#import "Caculate.h"

@implementation Caculate

+ (CGFloat)caculate:(void (^)(CaculateMake *))caculateBlock {
    
    CaculateMake *make = [[CaculateMake alloc] init];
    caculateBlock(make);
    return make.result;
}

@end

Swift版

class CaculateMake {
    
    var result: Int = 0
    
    func add(num: Int) -> CaculateMake {
        result += num
        return self
    }
    
    
    func sub(num: Int) -> CaculateMake {
        result -= num
        return self
    }
    
}

class Caculate {
    
    static func beginCaculate(caculateBlock: (CaculateMake) -> ()) -> Int {
        let caculateMake = CaculateMake()
        caculateBlock(caculateMake)
        return caculateMake.result
    }
    
}

#### 使用
let n = Caculate.beginCaculate { (make) in
    make.add(num: 10).add(num: 20)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,192评论 4 61
  • 转自Objective-C 链式编程最近看到了链式编程和函数式编程这两个概念,网上查了一些资料,但是发现资料都千篇...
    飞雨2013阅读 841评论 1 1
  • 对一个程序猿来说,从一开始接触编程后会逐渐经历好几个不同的编程思想。包括过程式编程、面向对象编程、响应式编程、函数...
    BennyLoo阅读 1,387评论 1 3
  • 电脑用了3-4年,运行速度就变慢,还动不动死机,容易耽误事。 在公司,通常能找信息中心维修,一重启,二杀毒,三就系...
    妙呜阅读 348评论 0 0
  • 五百年前,我只是一顽皮野猴。齐天大圣的名号,留给了天庭,惊了玉帝、憾了灵霄、最后我却……没能离去你的身旁。 师父,...
    苏少白阅读 282评论 1 0