函数式编程
2020-02-12 本文已影响0人
UILabelkell
函数式编程:Functional Programming
1 基本解释:
函数式编程 是一种思维模式,一种编程思想,一种编程方式,一种编程范式
2 基本特性:
不使用可变的变量处理 赋值,循环和其他命令式控制结构去编程:
好处:
2.1 函数即不依赖外部的状态也不修改外部的状态:函数调用的结果不依赖调用的时间和空间状态,这样写的代码容易进行推理,不容易出错。这使得单元测试和调试都更容易。
2.2 线程安全:函数式编程可以帮我们解决这一痛点,每一个纯函数都是线程安全
时间状态:变量一旦有了状态,它就有可能随着时间而发生变化,时间是最不可预知的因素
空间状态:如果把一个线程看成一个独立的空间,在程序的世界当中,空间会产生交叉重叠。一个变量如果可以被两个线程同时访问,它的值如果可以在两个空间发生变化,这个变量同样变得很危险
3 常规关键字
3.1高阶函数:参数为函数或返回值为函数的函数 //函数式编程就是指这种高度抽象的编程范式
3.2惰性求值:就是我们常常口语化的“懒加载”,表达式赋值给变量时,并不会马上参与计算求值,是当变量被调用时候才会计算。通过按需加载计算提升性能
4感悟:(1)函数式编程并不会减少我们的代码量,它改变的只是我们书写代码的方式
(2) 编程方式表达更接近于自然语言,调用表达可直译(对命名准确性要求高),注重结果。
- (void)getLastestYZToken:(void (^)(BOOL isSuccess))callBlock//参数是闭包block 自己在平时的开发中“不小心”就会使用函数式编程思想
{
callBlock(isSuccess);
}