纯函数:函数式编程入门

栏目: IT技术 · 发布时间: 4年前

纯函数:函数式编程入门

纯函数是所有函数式编程语言中使用的概念,这是一个非常重要的概念,因为它是函数式编程的基础,它允许你创建简单和复杂的组合模式。

纯函数背后的数学术语我就不说了,我直接说说说它们是什么以及它们的样子。

你可以确定满足以下条件的函数是纯函数:

  • 它应始终返回相同的值。不管调用该函数多少次,无论今天、明天还是将来某个时候调用它。

  • 自包含(不使用全局变量)。

  • 它不应修改程序的状态或引起副作用(修改全局变量)。

第一个条件:应始终返回相同的值

以以下功能为例

Math.cos(0) // 1

无论今天,明天还是将来某个时间调用 Math.cos(0) 都没关系,输出始终为 1 。我们来看一个新的例子

const numberOfApples = 5;
const applesBought = 5;
const add = (num1, num2) => num1 + num2;
const totalApples = add(numberOfApples, applesBought) // 10
const totalApples = add(numberOfApples, applesBought) // 10
// ... one month later
const totalApples = add(numberOfApples, applesBought) //10

add函数也会发生同样的事情,不管调用该函数多少次或何时调用该函数,每次输出都相同。

现在,我们来看一个随时间或每次调用而变化的函数:

Math.random() // 返回一个随机数
Math.random() // 返回一个不同的随机数
// 一个月后
Math.random() // 返回一个不同的随机数

如你所见,每次调用 Math.random() 时,输出都会改变,因此我们不能说 Math.random() 是纯函数。

第二标准:自包含

通过使用非纯函数,这个标准也很容易理解,所以让我们看看非纯函数是什么样子的:

const numberOfApples = 5
const applesBought = 5
const addApplesToTotal = (num1) => numberOfApples + num1;
const totalApples = addApplesToTotal(applesBought); // 10

从上一个示例可以看到,函数 addApplesToTotal 使用的是上面定义的变量,它不是传递 numberOfApples 的值,而是直接访问外部范围。因此, addApplesToTotal 不是自包含的。

第三个条件:它不应修改程序的状态或引起副作用

与前面的标准一样,可以使用非纯函数很好地演示这个标准。我们来看一下 :eyes:

let totalApples = 5
const applesBought = 5
const addApplesToTotal = () => {
  totalApples += applesBought
};
addApplesToTotal()

你能从前面的不纯函数中注意到什么?它打破了前面的两个标准!!

  • 它正在访问外部作用域,因此它不是自包含的。

  • 它正在引起副作用,因为它改变了 totalApples 的值。

为什么纯函数很重要?

  • 纯函数不那么复杂

  • 更容易调试 :bug:

  • 易于组合

  • 易于并行化

总结

纯函数是函数编程中一个基本但功能强大的概念。学习和习惯纯函数可以使你更轻松地测试和调试代码。它们将允许你学习关于函数式编程的更复杂的知识。

推荐阅读

HTML页面生成器:使用JavaScript和Node创建CLI

CSS中的间距,前端开发中各种设置间距的优点缺点及实例

你不知道的CSS国际化

React.js和Vue.js的语法并列比较

老板知道会点赞,前端开发人员的10个安全建议

Web中的图像技术总结与实践

温故知新 | Vue.js进阶必会,编写你的第一个Vue.js插件

从零开始使用JavaScript制作自己的命令行(CLI工具)

Vue.js中编写更好的v-for循环的6种技巧

纯函数:函数式编程入门

如果对你有帮助,还可以 在看、留言、 转发 ,这是对作者最大的帮助。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

51单片机应用从零开始

51单片机应用从零开始

杨欣、王玉凤、刘湘黔 / 清华大学 / 2008-1 / 39.80元

《51单片机应用与实践丛书•51单片机应用从零开始》在分析初学者认知规律的基础上,结合国内重点大学一线教师的教学经验以及借鉴国外经典教材的写作手法,对51单片机的应用基础知识进行系统而翔实的介绍。读者学习每一章之后,"实例点拨"环节除了可以巩固所学的内容外,还开辟了单片机应用的视野;再加上"器件介绍"环节,又充实了对单片机从基础到应用所需要的知识。8051单片机不仅是国内用得最多的单片机之一,同时......一起来看看 《51单片机应用从零开始》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具