iOS函数响应式编程应用研究

来源:互联网 发布:7英寸windows平板 编辑:程序博客网 时间:2024/05/24 01:25


  1. 什么是函数响应式编

      函数响应式编程是两个声明式编程的子范式(函数式 +响应式)的组合。

1)函数式编程

函数式编程是一种编程范式,实际上是如何编写程序的方法论。具有五个鲜明的特点

1)函数是一等公民。函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数传入另一个函数或者作为别的函数的返回值。

2)只用表达式,不用语句表达式expression)是一个单纯的运算过程,总是有返回值,语句"statement)是执行某种操作,没有返回值。函数式编程要求每一步都是单纯的运算,而且都有返回值。

3)没有副作用。副作用指的是函数内部与外部互动(最典型的情况就是修改全局变量的值)产生运算以外的其它结果。函数式编程没有副作用,意味着函数要保持独立,所有功能就是返回一个新的值,没有其它的行为,尤其是不得修改外部变量的值。

4)不修改状态。函数式编程只是返回新的值,不修改系统变量。

5)应用透明。指的是函数的运行不依赖于外部变量或状态,只依赖于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的。

2)响应式编程

响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

举个简单的例子,表格A是用来记录其它两个表格(表格B、表格C)的和,当表格B或者表格C中的任意一个值发生变化时,这些变化都会通过表实时改变表格A的值。换句话说,我们定义好ABC的和值,无论发生什么,A都会响应BC的变化。


. 解决什么问题

        程序开发中,使用异步操作来实现某个功能是非常普遍的。Apple在它的SDK中提供了许多APIs来满足程序员的异步操作请求,如NotificationCenter、代理模式、GCD和闭包(OC中的block)。

异步操作有一个最大的问题:状态的不确定。用户输入,网络好坏甚至是iOS系统不同,都可能改变代码的执行情况。

函数响应式编程就是为了简化异步操作,使得开发人员可以像操作变量一样操作闭包。


怎么做

       RxSwift ReactiveCocoa 是两个满足函数响应式编程范式的开源库,前者使用Swift开发,后者使用Objective-C。由于playground更适用于学习iOS的一些新技术,我将用RxSwift讲解一些实际应用。



小结:简单介绍了什么是函数响应式编程,以及通过函数响应式编程可以达到哪些效果。在iOS开发中,RxSwift是实现MVVM架构的重要组成部分(MVVM架构的优越性不再赘述)。


参考: 维基百科和http://news.realm.io/