zoukankan      html  css  js  c++  java
  • iOS函数式编程

    是把操作尽量写成一系列嵌套的函数或者方法调用。

    • 函数式编程特点:每个方法必须有返回值(本身对象),把函数或者Block当做参数,block参数(需要操作的值)block返回值(操作结果)

    • 代表:ReactiveCocoa。

    • 用函数式编程实现,写一个加法计算器,并且加法计算器自带判断是否等于某个值.

    @interface Caculator : NSObject

     

    @property (nonatomic, assign) int          result;

    @property (nonatomic, assign) BOOL         isEqule;

     

    - (Caculator *)caculator:(int (^)(int value))block;// 内部触发block,外部执行block,并得到结果;

    - (Caculator *)equle:(BOOL (^)(int result))block;// 内部触发block,外部执行block,并得到结果;

    @end

     

    @implementation Caculator

     

    - (instancetype)init

    {

        if (self = [super init]) {

            self.result = 1;

            self.isEqule = NO;

        }

        return self;

    }

     

    - (Caculator *)caculator:(int (^)(int value))block

    {

        _result = block(_result);

        NSLog(@"%d",_result);

        return self;

    }

    - (Caculator *)equle:(BOOL (^)(int result))block

    {

        _isEqule = block(_result);

        NSLog(@"%d",_isEqule);

        return self;

    }

    // 调用

     

     Caculator *ca = [[Caculator alloc] init];

        BOOL isEqule = [[[ca caculator:^int(int value) {// 调用方法,会执行block,将结果给回去,

            value += 2;

            value *= 5;

            return value;

        }] equle:^BOOL(int result) {// 调用方法,会执行block,将结果给回去,

            return (result == 15);

        }] isEqule];// 调用getter方法,获取最终的执行结果

        

        NSLog(@"%d",isEqule);

     

  • 相关阅读:
    转!idea 破解版 安装
    原!!自动备份 发布脚本
    原!linux脚本统计
    转!!mybatis xml 传值 if test判断
    转!mysql备份与还原数据库
    转!mysql 命令行下 通过DELIMITER临时改变语句分隔符 执行存储过程
    原!统计文件 包含关键字 数量
    原!mysql存储过程 批量导入数据
    转!!Linux 里的 2>&1 究竟是什么
    原!linux 监控 jar定时任务 挂了重启 脚本
  • 原文地址:https://www.cnblogs.com/dengchaojie/p/7879057.html
Copyright © 2011-2022 走看看