• 模仿Masonary写一个计算器


    1.CaculatorMaker

    @interface CaculatorMaker : NSObject
    @property(nonatomic,assign)int result;
    -(CaculatorMaker *(^)(int))add;
    -(CaculatorMaker *(^)(int))sub;
    -(CaculatorMaker *(^)(int))muilt;
    -(CaculatorMaker *(^)(int))divide;
    @end
    
    #import "CaculatorMaker.h"
    
    @implementation CaculatorMaker
    
    - (CaculatorMaker *(^)(int))add
    {
        return ^(int value)
        {
            self.result += value;
            return self;
        };
    
    }
    -(CaculatorMaker *(^)(int))sub{
        return ^CaculatorMaker *(int value){
            _result -= value;
            return self;
        };
    
    }
    -(CaculatorMaker *(^)(int))muilt;
    {
        return ^CaculatorMaker *(int value){
            _result *= value;
            return self;
        };
    }
    -(CaculatorMaker *(^)(int))divide;
    {
        return ^CaculatorMaker *(int value){
            _result /= value;
            return self;
        };
    }
    @end
    

     NSObject (CaculatorMaker)

    #import <Foundation/Foundation.h>
    #import "CaculatorMaker.h"
    @interface NSObject (CaculatorMaker)
    //计算
    + (int)makeCaculators:(void(^)(CaculatorMaker *make))caculatorMaker;
    
    @end
    
    #import "NSObject+CaculatorMaker.h"
    
    @implementation NSObject (CaculatorMaker)
    //计算
    + (int)makeCaculators:(void(^)(CaculatorMaker *make))block
    {
        CaculatorMaker *mgr = [[CaculatorMaker alloc] init];
        block(mgr);
        return mgr.result;
    }
    @end
    

     使用:

     int iResult = [NSObject makeCaculators:^(CaculatorMaker *make) {
            make.add(1).add(2).add(3).divide(2);
        }];
        
        NSLog(@"-==========:%d",iResult);
    
  • 相关阅读:
    dojo自定义Widget
    奇怪的JS
    Dojo Widget系统(转)
    JS 中Promise 模式
    Structs 原理图
    ArcGIS Engine Style文件操作
    dojo.hitch 原理
    Android:解决cannot find zipalign的问题
    Bootstrap:解决Bootstrap下拉框需要双击才能打开的问题
    Clojure:添加gzip功能
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/7210925.html
Copyright © 2020-2023  润新知