小编收到小伙伴们要求,带大家了解关于函数式编程,这个内容想必大家并不陌生,也是经常需要应用的,已经整理好以下详细的介绍,一起来看看吧~
函数式编程理解:
编写代码的时候,函数式编程更多的是从声明式的方法,而传统的编程更多的是命令式的方法。例如,上面的筛选学生年纪,传统的编程思想是,我创建了什么,我循环了什么,我判断了什么,得出了什么结果;函数式编程的思想是,我声明了一个筛选的函数,我声明了一个判断的函数,我把这两个函数结合起来,得出了一个结果。
关于纯函数
在函数式编程的概念中,有一个重要的概念是纯函数,那么什么是纯函数呢?
我们用代码来解释什么是纯函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
这个函数就变成了不纯的函数了,因为它返回的值会受到全局的z的影响,换句话说,这个函数会被外部环境影响,我们就得出了第一个判断是否纯函数的重要依据——纯函数不会受到外部环境的影响。
再用splice和slice来解释一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
slice收到同样的参数,每次返回相同的值,所以是纯函数,splice收到同样的参数,每次返回不同的值,所以不是纯函数,我们就得出了第二个判断是否纯函数的重要依据——纯函数相同的输入,永远会得到相同的输出。
总结:
1 2 |
|
关于柯里化
柯里化的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
1 2 3 4 |
|
上面的例子,就是一个很典型的柯里化函数,在我们第一调用的时候,接收了第一次传入的参数(用闭包记住),返回了一个新的函数;在第二次调用的时候,接收第二次传入的参数,并且和第一次传入的函数相加,返回它们的和。
运用上面的思想编写一个的柯里化函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
柯里化函数比较重要的思想是:
多次判断传入的参数是否满足计算需求,满足,返回计算结果,如果不满足,继续返回一个新的柯里化函数
关于代码组合
首先,先写一个简单的组合函数:
1 |
|
这个组合函数接收两个函数当作参数,然后返回一个新的函数,x是两个函数之间都要使用的值,比如说:
1 2 3 4 5 6 7 8 9 10 |
|
组合的原理其实就是数学中的结合律:
1 |
|
对组合的理解是:
组合是什么,组合就是运用了数学里的结合律,像是搭积木一样,把不同的函数联系起来,让数据在里面流动
在各种库里面都有组合的函数,lodash,underscore,ramda等等,比如在underscore里面,组合是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
相信大家到这里已经初步了解了函数式编程的概念了,那么我们怎么使用函数式编程的方式写代码呢,举个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
如果想要在项目里面正式使用函数式编程有这样几个步骤:
1、先尝试使用ES6自带的高阶函数
2、熟悉了ES6自带的高阶函数后,可以自己尝试写几个高阶函数
3、在这个过程中,尽量使用纯函数编写代码
4、对函数式编程有所了解之后,尝试使用类似ramda的库来编写代码
5、在使用ramda的过程中,可以尝试研究它的源代码
6、尝试编写自己的库,柯里化函数,组合函数等
以上就是关于函数式的全部内容介绍,大家可以消化学习,如需了解更多python实用知识,点击进入PyThon学习网教学中心。