美文网首页
iOS 简单地链式编程

iOS 简单地链式编程

作者: 青椒辣不辣 | 来源:发表于2017-09-25 11:48 被阅读8次

一 方法的实现

#import <Foundation/Foundation.h>

@interface RJBlockTool : NSObject
//计算
+ (CGFloat)makeCalculator:(void(^)(RJBlockTool *rj_tool))block;

typedef RJBlockTool *(^RJCalculator)(CGFloat num);

@property (nonatomic, strong, readonly) RJCalculator plus;//
@property (nonatomic, strong, readonly) RJCalculator subtract;
@property (nonatomic, strong, readonly) RJCalculator multiply;
@property (nonatomic, strong, readonly) RJCalculator divide;

//拼接字符串
+ (NSString *)makeAppendingString:(void(^)(RJBlockTool *rj_tool))block;

@property (nonatomic, strong, readonly) RJBlockTool *(^date)(NSString *str);
@property (nonatomic, strong, readonly) RJBlockTool *(^who)(NSString *str);
@property (nonatomic, strong, readonly) RJBlockTool *(^note)(NSString *str);

@end
#import "RJBlockTool.h"

@interface RJBlockTool()
//1 计算的结果
@property(nonatomic,assign) CGFloat resultCalculator;

//2 处理后的字符串
@property(nonatomic,strong) NSString *resultString;
@end

@implementation RJBlockTool

/*************************** 计算(加减乘除) *******************************/
+(CGFloat)makeCalculator:(void (^)(RJBlockTool *))block{
    if (block) {
        RJBlockTool *tool = [[RJBlockTool alloc] init];
        block(tool);
        return tool.resultCalculator;
    }
    return 0;
}
-(RJCalculator)plus{
    return ^(CGFloat num){
        self.resultCalculator += num;
        
        return self;
    };
}
-(RJCalculator)subtract{
    return ^(CGFloat num){
        self.resultCalculator -= num;
        
        return self;
    };
}
-(RJCalculator)multiply{
    return ^(CGFloat num){
        self.resultCalculator *= num;
        
        return self;
    };
}
-(RJCalculator)divide{
    return ^(CGFloat num){
        self.resultCalculator /= num;
        
        return self;
    };
}
/*************************** 计算(加减乘除) *******************************/



/*************************** 拼接字符串 *******************************/
+(NSString *)makeAppendingString:(void (^)(RJBlockTool *))block{
    if (block) {
        RJBlockTool *tool = [[RJBlockTool alloc] init];
        tool.resultString = @"date,who一起去看电影,备注:note";
        block(tool);
        return tool.resultString;
    }
    return @"为什么你什么都不说?";
}
-(RJBlockTool *(^)(NSString *))date{
    return ^(NSString *str){
        self.resultString = [self.resultString stringByReplacingOccurrencesOfString:@"date" withString:str];
        
        return self;
    };
}
-(RJBlockTool *(^)(NSString *))who{
    return ^(NSString *str){
        self.resultString = [self.resultString stringByReplacingOccurrencesOfString:@"who" withString:str];
        
        return self;
    };
}
-(RJBlockTool *(^)(NSString *))note{
    return ^(NSString *str){
        self.resultString = [self.resultString stringByReplacingOccurrencesOfString:@"note" withString:str];
        
        return self;
    };
}

/*************************** 拼接字符串 *******************************/

@end

二 使用

NSLog(@"计算结果1-->%f",[RJBlockTool makeCalculator:^(RJBlockTool *rj_tool) {
    rj_tool.plus(10).subtract(2).multiply(5).divide(8);
}]);

NSLog(@"计算结果2-->%f",[RJBlockTool makeCalculator:^(RJBlockTool *rj_tool) {
    rj_tool.plus(10);
    rj_tool.subtract(2);
    rj_tool.multiply(5);
    rj_tool.divide(5);
}]);

NSLog(@"计算结果:-->%@",[RJBlockTool makeAppendingString:^(RJBlockTool *rj_tool) {
    rj_tool.date(@"今天").who(@"我和她").note(@"嘿嘿嘿");
}]);
计算结果1-->5.000000
计算结果2-->8.000000
计算结果:-->今天,我和她一起去看电影,备注:嘿嘿嘿

相关文章

  • iOS 简单地链式编程

    一 方法的实现 二 使用

  • iOS 链式编程简单的使用

    iOS 链式编程简单的使用 链式编程-顾名思义,链式,连贯性为其主要特征,放在编程领域来讲,说简单点就是把一系列的...

  • 工作iOS技术总结

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

  • ReactiveObjC入门

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

  • IOS_编程思想_链式编程练习

    在之前的两篇文章中已经简单的介绍了IOS的编程思想,那在此处写一个链式编程的联系来加深对链式编程思想的理解!!! ...

  • iOS 链式编程

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

  • 链式编程总结

    链式编程总结 @(iOS) 研究了一下链式编程,但是感觉项目中用处不是很多。 介绍 1.什么时候使用链式编程?在面...

  • 简单的链式编程(iOS)

    1.链式编程思想 最初接触Masonry框架的时候还不知道什么链式编程,最初的感觉就是Masonry使用起来很简洁...

  • iOS开发链式编程,函数式编程,响应式编程

    1,因为时间问题,简单描述一下这三个概念。 链式编程: 链式编程顾名思义iOS的点语法(.) 一点点到天昏地暗。当...

  • iOS-链式编程思想

    在iOS中,链式编程虽然用的不太多,但是,在特定的应用环境下,利用block实现链式编程的话,会大大的提高编程效率...

网友评论

      本文标题:iOS 简单地链式编程

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