美文网首页iOS
iOS 函数编程 & 链式编程

iOS 函数编程 & 链式编程

作者: NieFeng1024 | 来源:发表于2016-11-02 01:02 被阅读21次

函数式(链式)编程

函数式编程概念

  • 函数式编程是种编程范式
  • 函数式编程 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");
1.png 2.png 3.png 4.png

https://github.com/550872569/550872569-FuncTypeCode.git

相关文章

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • iOS链式、函数式和响应式编程

    原文编程思想-iOS链式、函数式和响应式编程 在了解链式、函数式和响应式编程前,我们需要回顾下Block,它在下面...

  • iOS-链式编程

    函数式编程------->链式编程 函数式编程: 调用方式 我们最终目的是将函数式编程转换为链式编程:首先将调用方...

  • iOS链式编程及函数式编程

    提到链式编程和函数式编程,最典型的代表是Masonry 比较完美的实现了函数式编程和链式编程。例如 ``` [vi...

  • iOS的block与编程思想(一)

    本文承接自上一篇《iOS的block与链式编程思想》 函数式编程 首先我们需要明白什么是函数式编程么?先说一点比较...

  • RAC学习详解

    Block开发基础知识 链式编程思想简介 响应式编程思想简介 函数式编程思想简介 参考资料 iOS 关于MVC和M...

  • 链式编程与函数编程

    1. 链式编程 2. 函数式编程 例子:

  • iOS 函数式编程(链式编程)

    在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行...

网友评论

    本文标题:iOS 函数编程 & 链式编程

    本文链接:https://www.haomeiwen.com/subject/hrkvuttx.html