zoukankan      html  css  js  c++  java
  • 模仿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);
    
  • 相关阅读:
    Go 场景
    sourcetree clone 提示url无效
    简单去重比较/复杂数据去重处理
    vue组件之间的通信
    js-执行机制之同步、异步、宏任务、微任务
    react生命周期
    git push被忽略的文件 处理
    请求头的属性
    运算精度问题https://blog.csdn.net/smile_ping/article/details/80284969
    react中状态提升
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/7210925.html
Copyright © 2011-2022 走看看