美文网首页
2018-11-04iOS链式响应编程-加减乘除

2018-11-04iOS链式响应编程-加减乘除

作者: 窗内户外 | 来源:发表于2018-11-04 22:54 被阅读0次
一、什么是链式编程?
链式编程,是指将多个方法用点语法链接起来。
1)让代码更加简洁;
2)可读性更强;
3)编程性强;
4)对程序员的业务能力要求高;
5)不太利于代码调试。 
二、调用代码,如下:
//
//  ViewController.m
//  链式编程Demo
//
//  Created by ghk on 2018/11/4.
//  Copyright © 2018年 ghk. All rights reserved.
//

#import "ViewController.h"
#import "Tool.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    float result = [Tool make:^(Tool *tool) {

        tool.add(1).add(2).add(3).subtract(1).ride(5).divide(4);
    }];

    NSLog(@"%f",result);
}


@end

三、Tool实现代码,如下:
//
//  Tool.h
//  链式编程Demo
//
//  Created by ghk on 2018/11/4.
//  Copyright © 2018年 ghk. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Tool : NSObject

typedef Tool * (^Block)(NSInteger number);

/** 加法 */
@property (nonatomic, copy, readonly) Block add;
/** 减法 */
@property (nonatomic, copy, readonly) Block subtract;
/** 乘法 */
@property (nonatomic, copy, readonly) Block ride;
/** 除法 */
@property (nonatomic, copy, readonly) Block divide;

+ (float)make:(void (^)(Tool *tool))block;

@end
//
//  Tool.m
//  链式编程Demo
//
//  Created by ghk on 2018/11/4.
//  Copyright © 2018年 ghk. All rights reserved.
//

#import "Tool.h"

@interface Tool ()

@property (nonatomic, assign) float result;

@end

@implementation Tool

- (void)dealloc
{
    NSLog(@"%s",__func__);
}

+ (float )make:(void (^)(Tool *tool))block {

    if (block) {

        Tool *tool = [[Tool alloc] init];
        block(tool);
        return tool.result;
    }
    return 0;
}

- (Block)add {

    return ^(NSInteger number) {

        float newResult = self.result;
        newResult += number;
        NSLog(@" %f + %zi = %f",self.result,number,newResult);
        self.result = newResult;

        return self;
    };
}

- (Block)subtract {

    return ^(NSInteger number) {

        float newResult = self.result;
        newResult -= number;
        NSLog(@" %f - %zi = %f",self.result,number,newResult);
        self.result = newResult;

        return self;
    };
}

- (Block)ride {

    return ^(NSInteger number) {
        float newResult = self.result;
        newResult *= number;
        NSLog(@" %f × %zi = %f",self.result,number,newResult);
        self.result = newResult;
        return self;
    };
}

- (Block)divide {

    return ^(NSInteger number) {
        float newResult = self.result;
        newResult /= number;
        NSLog(@" %f ÷ %zi = %f",self.result,number,newResult);
        self.result = newResult;
        return self;
    };
}

@end
欢迎评价!!!!!!
感谢支持!!!!!!

相关文章

  • 2018-11-04iOS链式响应编程-加减乘除

    一、什么是链式编程? 二、调用代码,如下: 三、Tool实现代码,如下: 欢迎评价!!!!!! 感谢支持!!!!!!

  • ReactiveObjC入门

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

  • iOS链式、函数式和响应式编程

    原文编程思想-iOS链式、函数式和响应式编程 在了解链式、函数式和响应式编程前,我们需要回顾下Block,它在下面...

  • 链式编程与响应式编程

    链式编程 在实际开发过程中,基本上链式开发思想很常见。第三方框架Masonry和ReactiveCocoa都大量用...

  • jQuery 链式编程

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

  • ReactiveCocoa综合

    最终诉求 整理层次结构,一个理论一个demo,链式编程、响应式编程、RAC内部原理、编程思想、RAC梳理直播逻辑、...

  • 链式编程思想

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

  • iOS 链式编程

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

  • RAC学习详解

    Block开发基础知识 链式编程思想简介 响应式编程思想简介 函数式编程思想简介 参考资料 iOS 关于MVC和M...

  • RAC用法详解,一看就懂,以及RAC中的循环引用

    最近一段时间开始研究RAC,它集响应式编程,函数式编程和链式编程于一身,官方的说,ReactiveCocoa(其简...

网友评论

      本文标题:2018-11-04iOS链式响应编程-加减乘除

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