美文网首页
仿masony的一个加法计算器.

仿masony的一个加法计算器.

作者: ___as7 | 来源:发表于2016-05-03 16:17 被阅读70次

    参考了http://www.jianshu.com/p/87ef6720a096
    尚未看完,只是想先试着写一写其中的加法计算器.

    代码如下

    @interface GNCaculatorMaker : NSObject
    
    @property (nonatomic,assign) NSInteger result;
    
    // 提供外界快速创建加法计算器对象并且使用的方法
    // 参数是一个带参数的block,block的参数是创建的计算器对象
    // 这个方法应该写在本类的分类中
    + (NSInteger)makeCaculate:(void(^)(GNCaculatorMaker *))block;
    
    // 以下方法返回值是一个带返回值的block
    // block的返回值是self
    // 加
    - (GNCaculatorMaker *(^)(NSInteger))add;
    // 减
    - (GNCaculatorMaker *(^)(NSInteger))sub;
    
    @end
    
    #import "GNCaculatorMaker.h"
    
    @implementation GNCaculatorMaker
    
    // 加法实现
    - (GNCaculatorMaker *(^)(NSInteger))add{
        
        return ^GNCaculatorMaker *(NSInteger num){
            
            _result += num;
            
            return self;
        };
    }
    
    // 减法实现
    - (GNCaculatorMaker *(^)(NSInteger))sub{
        
        return ^GNCaculatorMaker *(NSInteger num){
            
            _result -= num;
            
            return self;
        };
    }
    
    // 提供给外界直接使用的方法.方便快捷的创建计算器对象,并且进行计算.
    + (NSInteger)makeCaculate:(void (^)(GNCaculatorMaker *))block{
        
        if (block) {
            // 创建计算器对象
            GNCaculatorMaker *maker = [[GNCaculatorMaker alloc]init];
            // 调用block,并且把计算器对象传入,以供外界使用.
            block(maker);
            // 返回最终结果
            return maker.result;
        }
        return 0;
    }
    
    @end
    
    

    调用结果

        NSInteger result = [GNCaculatorMaker makeCaculate:^(GNCaculatorMaker *maker) {
    
            // 调用add方法以后,返回值是一个block. maker.add 此时相当于一个block  即 maker.add 相当于 block
            // 于是在直接调用这个block maker.add(10) 相当于 oneBlock(10)
            // 由于block的返回值是一个计算器对象,所以可以继续调用计算器的其他方法.
            maker.add(10).sub(10).add(10);
            
        }];
        
        NSLog(@"%zd",result);
        // 结果为10;
    

    Demo github地址
    https://github.com/coderAs7/_as7

    相关文章

      网友评论

          本文标题:仿masony的一个加法计算器.

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