一、基本概念
1.1、函数响应式编程
1.1.1 函数式
函数式编程简称FP(Functional Programming),函数式编程就是一种抽象程度很高的编程范式,它将计算机运算看做是数学中函数的计算,而纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。
函数式编程的一个特点就是:允许把函数本身作为参数传入另一个函数,同时还允许返回一个函数!
函数表达式: y = f(x) —> x = f(x) —> y = f(f(x))
常规需求例子,感受函数式的舒服!
- 对于数组
[1,2,3,4,5,6,7,8,9,10],首先获取> 2的数字, - 获取到的数字之后 + 1,
- 再输出所有数字中的偶数
let array = [1,2,3,4,5,6,7,8,9,10]
for num in array{
if num > 2{
let number = num + 1
if (number % 2 == 0) {
print(number)
}
}
}
- 上面的代码嵌套层次之深,我觉得已经非常恶心
- 代码的可读性也是非常差的
- 代码复用性较低
- 维护以及代码构建成本太高,这样就成了函数式出现的必要性
let array = [1,2,3,4,5,6,7,8,9,10]
array.filter{ $0 > 2}
.filter{ ($0+1) % 2 == 1}
.forEach { print($0) }
- 代码层次非常清晰
- 代码可读性高
- 代码复用性高
- 代码简洁,直接面向开发需求
1.1.2 响应式
对象对某一数据流变化做出响应的这种编码方式称为响应式。
例如我们在爱奇艺平台观看视频,我们只需要在某一个时刻订阅了这个视频,后面平台自媒体运营者不断更新视频,我们随着时间也能自定接受推送,这就是响应
在iOS开发中我们经常会响应一些事件button、tap、textField、textView、notifaction、KVO、NSTimer等等这些,都需要做响应监听,响应后都需要在对应的响应事件中去做处理,而原生开发中,触发对象与响应方法是分离的,如button的初始化和点击响应方法是分离的。功能代码与逻辑代码分析,导致很多比较恶心的感觉!
blingbling, blingbling, blingbling!RxSwift 闪亮登场
1.2、RxSwift简介
RxSwift 是 ReactiveX 家族的重要一员, ReactiveX 是 Reactive Extensions 的缩写,一般简写为 Rx。ReactiveX官方给Rx的定义是:Rx是一个使用可观察数据流进行异步编程的编程接口。

ReactiveX不仅仅是一个编程接口,它是一种编程思想的突破,它影响了许多其它的程序库和框架以及编程语言。它拓展了观察者模式,使你能够自由组合多个异步事件,而不需要去关心线程,同步,线程安全,并发数据以及I/O阻塞。
RxSwift 是 Rx 为 Swift 语言开发的一门函数响应式编程语言, 它可以代替iOS系统的 Target Action / 代理 / 闭包 / 通知 / KVO,同时还提供网络、数据绑定、UI事件处理、UI的展示和更新、多线程……
鉴于Swift日渐增长的影响力,ios开发者不可避免的要学习和使用Swift这门语言进行编程开发。而RxSwift对使用Swift的帮助有如下几点:
Swift为值类型,在传值与方法回调上有影响,RxSwift一定程度上弥补Swift的灵活性
RxSwift使得代码复用性较强,减少代码量RxSwift因为声明都是不可变更,增加代码可读性RxSwift使得更易于理解业务代码,抽象异步编程,统一代码风格RxSwift使得代码更易于编写集成单元测试,增加代码稳定性
随时随地看视频