iOS 函数式编程

作者: LYSNote | 来源:发表于2016-12-16 21:25 被阅读153次

在介绍函数式编程之前,大家先了解下在平常工作中,我们那些地方使用了函数式编程,以及使用函数编程有哪些好处.

对JavaScript进行封装了的jQuery就是函数式编程的经典之作

$("p").css("background-color");

iOS 中Masonry第三方约束也是使用了函数式编程的思想

make.centerY.equalTo(self.view).offset(100);

我们先分析一下,这样写,有什么好处

  • 把某一个设置进行模块化,每一个 "." 之后都代表着一个功能的添加(看上去,条理清晰)
  • 在添加和取出某一功能模块更加容易,只需要删除 "." 之后的那一功能即可

是不是感觉好厉害!!!

那么iOS 要想实现这样的编程方式,我们需要了解什么呢?

  • 其实每一个功能模块,都有一个返回值,而且实现函数式编程的重点就是这个返回值,自始至终,连接这些功能块就是这个返回值

是不是有点明白?

举个例子:

@interface Person : NSObject
- (void)eat;
- (void)run;
@end
@implementation Person
- (void)eat{
    NSLog(@"吃饭");
}
- (void)run{
    NSLog(@"跑步");
}
@end
Person *person = [[Person alloc] init];
[person eat];
[person run];

是不是很熟悉,要是不熟悉的话,请洗洗睡吧

eat 和 run 算不算是两个功能点?,是不是都是这个人在做?

上面说了, 函数式编程的主线就是那个返回值

改:

@interface Person : NSObject
- (Person *)eat;
- (Person *)run;
@end
@implementation Person
- (Person *)eat{
    NSLog(@"吃饭");
    return self;
}
- (Person *)run{
    NSLog(@"跑步");
    return self;
}
@end
Person *person = [[Person alloc] init];
[[person eat] run];

哎呀! 是不是有点感觉了

继续改:

@interface Person : NSObject
- (Person *(^)())eat;
- (Person *(^)())run;
@end
@implementation Person
- (Person *(^)())eat{
    return  ^Person *(){
        NSLog(@"吃饭");
        return self;
    };
}
- (Person *(^)())run{
    Person *(^block)() = ^(){
        NSLog(@"跑步");
        return self;
    };
    return block;
}
@end
Person *person = [[Person alloc] init];
person.run().eat();

哦,是不是很简单,这个时候每次返回的是一个block块

相关文章

  • 简单点,理解iOS与函数式编程

    简单点,理解iOS与函数式编程 简单点,理解iOS与函数式编程

  • iOS Developer 初级面试常见问题总结

    iOS 开发 RunLoop Cell 图片异步加载优化 iOS 函数式编程的实现 && 响应式编程概念 内存恶鬼...

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

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

  • ReactiveObjC入门

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

  • ReactiveCocoa初识篇

    关于ReactiveCocoa ReactiveCocoa是iOS环境下的一个函数式响应式编程框架。函数式响应式编...

  • RectiveCocoa的学习(一)

    RectiveCocoa 的代码风格 函数式编程 响应式编程 ReactiveCocoa在iOS开发时的作用有:替...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • 工作iOS技术总结

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

  • iOS 函数编程 & 链式编程

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

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

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

网友评论

    本文标题:iOS 函数式编程

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