• iOS链式编程范例


    http://www.jianshu.com/p/87ef6720a096

    链式编程思想:是将多个操作(多行代码)通过点号(.)链接在一起成为一句代码,使代码可读性好。a(1).b(2).c(3)

    • 链式编程特点:方法的返回值是block,block必须有返回值(本身对象),block参数(需要操作的值)

    • 代表:masonry框架。

    • 模仿masonry,写一个加法计算器,练习链式编程思想。

    链式编程的好处:按照自己的思路,一次性完成各种操作;

    例如,先做加法在做除法。

    #import <Foundation/Foundation.h>

     

    @class CaculatorMaker;

    @interface NSObject (Caculator)

    // block,形参是CaculatorMaker,无返回值

    + (int)makeCaculators:(void (^)(CaculatorMaker *make))block;

    @end

     

    #import "NSObject+Caculator.h"

    #import "CaculatorMaker.h"

     

    @implementation NSObject (Caculator)

     

    + (int)makeCaculators:(void (^)(CaculatorMaker *))block

    {

        CaculatorMaker *maker = [[CaculatorMaker alloc] init];

        block(maker);

        return maker.result;

    }

     

    @interface CaculatorMaker : NSObject

     

    @property (nonatomic, assign) int         result;

    // 这个add方法,虽然没有明显的形参,但是返回值需要形参,所以在执行add方法时,需要传入一个形参;

    // 返回值类型是block,形参是int,返回值是CaculatorMaker

    - (CaculatorMaker *(^)(int value))add;

    - (CaculatorMaker *(^)(int value))divide;

     

    - (instancetype)init

    {

        if (self = [super init]) {

            _result = 1;

        }

        return self;

    }

    - (CaculatorMaker *(^)(int value))add

    {

        return (^CaculatorMaker *(int xingCan){

            _result +=  xingCan;

            return self;

        });

    }

    - (CaculatorMaker *(^)(int))divide

    {

        return (^CaculatorMaker *(int xingCan){

            _result /=  xingCan;

            return self;

        });

        

    }

    @end

     

    // 调用

        int result = [NSObject makeCaculators:^(CaculatorMaker *make) {

            make.add(9).divide(2);// 执行add方法,相当于执行相应的block;

        }];

        NSLog(@"%d",result);

    // 输出

      5

     

  • 相关阅读:
    AxInterop.VPIClient DLL注册
    多个事务同时操作数据库
    aspx小试
    WPF 或得PNG图片的外形Path的Data
    Spass导出数据
    Excel VBA小试
    合并Excel文件
    asp.net 中文编码问题
    Delphi中的容器类(3)
    Delphi中的容器类(1)
  • 原文地址:https://www.cnblogs.com/dengchaojie/p/7878669.html
Copyright © 2020-2023  润新知