本文是函数式Swift的读书笔记,为了备忘(明明学的时候理解了,学完过一段时间就忘了,如果回头再看看,会有蛮大的收获,所以写读书笔记)
1.函数式编程的特点:
很难给函数式编程一个准确的定义,设计良好的Swift函数式程序具有一些特质
- 模块化:函数式开发者更倾向于强调每个程序都能够被反复分解为越来越小的模块单元,而所有这些块可以通过函数装配起来,以定义一个完整的程序
- 对可变状态的谨慎处理:函数式编程有时候 (被半开玩笑地) 称为“面向值编程”。面向对象编程专注于类和对象的设计,每个类和对象都有它们自己的封装状态。然而,函数式编程强调基于值编程的重要性,这能使我们免受可变状态或其他一些副作用的困扰。
- 类型: 最后,一个设计良好的函数式程序在使用类型时应该相当谨慎。精心选择你的数据和函数的类型
2. 面向对象 vs 函数式编程
面向对象强调的是将与某数据类型相关的一系列操作都封装到该数据类型中去,因此,在数据类型中难免存在大量状态,以及相关的行为。虽然这很符合人类的逻辑直觉,但是当类型关系变得错综复杂的时候,类型中状态的改变和类型之间彼此的继承和依赖将使程序的复杂度几何上升。
避免使用程序状态和可变对象,是降低程序复杂度的有效方式之一,而这也正是函数式编程的精髓。我们先构建一系列简单却具有一定功能的小函数,然后再将这些函数进行组装以实现完整的逻辑和复杂的运算,这是函数式编程的基本思想。
3. 本书介绍
最纯粹的函数式编程语言是 Haskell,但是国内用的人特别少。“Swift 是一门有着合适的语言特性来适配函数式编程方法的优秀语言”
本书的2-10章介绍函数式编程的基本概念。
10-12章是进阶内容。
4. 看书的感谢
感觉像是发现了新大陆,开始有点难以理解,慢慢发现 函数式的编程范式 也不错。为以后学习RXSwift打基础。