• 函数式(链式)编程


    函数式编程概念

    • 函数式编程是种编程范式
    • 函数式编程 Functional Programming,简写 FP
    • 使用特点,将局部小的逻辑计算封装为一个个小的函数体,在实际应用中将这些小的函数体 自由组合
    • 可以接受函数当作输入(参数)和输出(返回值)
    • 函数式编程的基础是 block闭包
    • 函数式编程的代表作品:Masnory / SnapKit
    make.centerY.equalTo(self.view).offset(100);
    

    函数式编程体验

    基本方法调用

    • 定义 Person 类
    @interface Person : NSObject
    
    - (void)eat;
    - (void)run;
    
    @end
    
    @implementation Person
    
    - (void)eat {
        NSLog(@"吃");
    }
    
    - (void)run {
        NSLog(@"跑");
    }
    
    @end
    
    • 调用方法
    Person *p = [[Person alloc] init];
    [p run];
    [p eat];
    
    • 存在问题,每个方法要分别调用,不能组合调用

    改进一 —— 添加方法的返回值

    - (Person *)eat1 {
        NSLog(@"吃1");
        return self;
    }
    
    - (Person *)run1 {
        NSLog(@"跑1");
        return self;
    }
    
    • 方法调用
    [[person eat1] run1];
    
    • 改进点
      • 可以在一个方法的基础上继续调用后续的方法
      • 方法调用顺序更加灵活

    改进二 —— 将返回值修改为 block,以函数的形式调用

    - (Person * _Nonnull (^)())eat2 {
    
        Person * (^myEatBlock)() = ^ Person * () {
            NSLog(@"吃2");
    
            return self;
        };
    
        return myEatBlock;
    }
    
    - (Person * _Nonnull (^)())run2 {
    
        return ^ Person * {
            NSLog(@"跑2");
    
            return self;
        };
    }
    
    • 执行函数
    person.eat2().run2();
    person.run2().eat2();
    

    改进三 —— 增加函数参数

    - (Person * _Nonnull (^)(NSString * _Nonnull))eat3 {
        return ^ Person * (NSString * food) {
            NSLog(@"吃 %@", food);
    
            return self;
        };
    }
    
    - (Person * _Nonnull (^)(float))run3 {
        return ^ Person * (float distance) {
            NSLog(@"跑了 %f 米", distance);
    
            return self;
        };
    }
    
    • 执行函数
    p.run3(100).eat3(@"food");

    简单的实际运用可以参考 我的这篇文章
  • 相关阅读:
    GitHub注册和Git安装
    Git克隆与更新代码
    三,jenkins配置构建执行状态
    四,jenkins设置定时任务
    二,jenkins创建构建任务
    一,jenkins环境搭建
    Python Selenium Web自动化上传/下载文件图文详解
    Robot Framework自动化测试(七)--- jybot模式
    jmeter eval函数之妙用(参数化文件内含各种表达式)
    jmeter ssh+jdbc用法
  • 原文地址:https://www.cnblogs.com/chzheng/p/5949376.html
Copyright © 2020-2023  润新知