云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
纯函数是所有函数式编程语言中使用的概念,这是一个非常重要的概念,因为它是函数式编程的基础,它允许你创建简单和复杂的组合模式。
纯函数背后的数学术语我就不说了,我直接说说说它们是什么以及它们的样子。
你可以确定满足以下条件的函数是纯函数:
- 它应始终返回相同的值。不管调用该函数多少次,无论今天、明天还是将来某个时候调用它。
- 自包含(不使用全局变量)。
- 它不应修改程序的状态或引起副作用(修改全局变量)。
第一个条件:应始终返回相同的值
以以下功能为例
无论今天,明天还是将来某个时间调用 Math.cos(0) 都没关系,输出始终为1。我们来看一个新的例子
add函数也会发生同样的事情,不管调用该函数多少次或何时调用该函数,每次输出都相同。
现在,我们来看一个随时间或每次调用而变化的函数:
如你所见,每次调用 Math.random() 时,输出都会改变,因此我们不能说 Math.random() 是纯函数。
第二标准:自包含
通过使用非纯函数,这个标准也很容易理解,所以让我们看看非纯函数是什么样子的:
从上一个示例可以看到,函数 addApplesToTotal 使用的是上面定义的变量,它不是传递 numberOfApples 的值,而是直接访问外部范围。因此,addApplesToTotal 不是自包含的。
第三个条件:它不应修改程序的状态或引起副作用
与前面的标准一样,可以使用非纯函数很好地演示这个标准。我们来看一下 👀
你能从前面的不纯函数中注意到什么?它打破了前面的两个标准!!
- 它正在访问外部作用域,因此它不是自包含的。
- 它正在引起副作用,因为它改变了 totalApples 的值。
为什么纯函数很重要?
- 纯函数不那么复杂
- 更容易调试 🐛
- 易于组合
- 易于并行化
总结
纯函数是函数编程中一个基本但功能强大的概念。学习和习惯纯函数可以使你更轻松地测试和调试代码。它们将允许你学习关于函数式编程的更复杂的知识。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-05-13
本文作者:杜尼卜
本文来自:“掘金”,了解相关信息可以关注“掘金”