iOS函数响应式编程应用研究
来源:互联网 发布:7英寸windows平板 编辑:程序博客网 时间:2024/05/24 01:25
- 什么是函数响应式编
函数响应式编程是两个声明式编程的子范式(函数式 +响应式)的组合。
(1)函数式编程
函数式编程是一种编程范式,实际上是如何编写程序的方法论。具有五个鲜明的特点
1)函数是“一等公民”。函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数传入另一个函数或者作为别的函数的返回值。
2)只用“表达式”,不用“语句”。”表达式”(expression)是一个单纯的运算过程,总是有返回值,”语句"(statement)是执行某种操作,没有返回值。函数式编程要求每一步都是单纯的运算,而且都有返回值。
3)没有”副作用”。副作用指的是函数内部与外部互动(最典型的情况就是修改全局变量的值)产生运算以外的其它结果。函数式编程没有副作用,意味着函数要保持独立,所有功能就是返回一个新的值,没有其它的行为,尤其是不得修改外部变量的值。
4)不修改状态。函数式编程只是返回新的值,不修改系统变量。
5)应用透明。指的是函数的运行不依赖于外部变量或”状态”,只依赖于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的。
(2)响应式编程
响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。
举个简单的例子,表格A是用来记录其它两个表格(表格B、表格C)的和,当表格B或者表格C中的任意一个值发生变化时,这些变化都会通过表实时改变表格A的值。换句话说,我们定义好A是B和C的和值,无论发生什么,A都会响应B或C的变化。
二. 解决什么问题
程序开发中,使用异步操作来实现某个功能是非常普遍的。Apple在它的SDK中提供了许多APIs来满足程序员的异步操作请求,如NotificationCenter、代理模式、GCD和闭包(OC中的block)。
异步操作有一个最大的问题:状态的不确定。用户输入,网络好坏甚至是iOS系统不同,都可能改变代码的执行情况。
函数响应式编程就是为了简化异步操作,使得开发人员可以像操作变量一样操作闭包。
三. 怎么做
RxSwift 和 ReactiveCocoa 是两个满足函数响应式编程范式的开源库,前者使用Swift开发,后者使用Objective-C。由于playground更适用于学习iOS的一些新技术,我将用RxSwift讲解一些实际应用。
小结:简单介绍了什么是函数响应式编程,以及通过函数响应式编程可以达到哪些效果。在iOS开发中,RxSwift是实现MVVM架构的重要组成部分(MVVM架构的优越性不再赘述)。
参考: 维基百科和http://news.realm.io/
- iOS函数响应式编程应用研究
- iOS-函数式编程 && 响应式编程概念
- 深入浅出iOS函数式编程与响应式编程概念
- iOS函数式编程的实现 & 响应式编程
- ios 函数式编程与响应式编程
- 【iOS架构】iOS ReactiveCocoa函数响应式编程
- IOS-响应式编程
- 函数响应式编程
- 响应式函数编程
- iOS函数响应式编程以及ReactiveCocoa的使用
- ios响应式编程Racsignal
- RxSwift 函数响应式编程
- RxJava响应式函数编程
- RxJava响应式函数编程
- 函数响应式编程_RxAndroid
- iOS中函数式编程和链式编程的应用
- 深入浅出-iOS函数式编程的实现 && 响应式编程概念
- 深入浅出-iOS函数式编程的实现 && 响应式编程概念
- 关于ios 三方库文件冲突解决方案
- Mat对象的使用及注意事项
- Spark Streaming 实战案例(四) Spark Streaming 缓存、Checkpoint机制
- Jedis的多种使用方式
- POJ 1321-棋盘问题(A)
- iOS函数响应式编程应用研究
- Windows x64内核中修改进程入口点
- 【Django】使用ImageField
- ORACLE 03 用户,方案的创建与管理
- (OK) Android-x86-7.1.1/ kernel 4.4.62
- oracle数据库CPU特别高的解决方法
- PHP 常量
- 因mysql表名与mysql关键字冲突导致的com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
- Mybatis出错:Error instantiating class xxx with invalid types () or values ()