gpt4 book ai didi

functional-programming - 当我们谈论函数中的函数时,究竟什么是纯函数

转载 作者:行者123 更新时间:2023-12-04 08:42:17 25 4
gpt4 key购买 nike

我了解到纯函数是不会改变全局状态的函数,句号。如果这是真的,函数内的函数可以改变外部函数的状态并且仍然是纯粹的,对吗?

例子:

function func1() {
let name = "My Name"
func2()

function func2() {
// alter name here.
}
}

在上面的例子中,func2 仍然是纯的,因为它没有使用任何全局状态。

这就是我的看法,但我的同事认为 func2 不是纯粹的,应该这样写:

function func1() {
let name = "My Name"
func2(name)

function func2(name) {
// use name here.
}
}

这是不好的,因为:

  • 如果 v8 不对此进行优化,CPU 将运行更多指令
  • 隐藏是一种不好的做法

问题是:当我们谈论函数中的函数时,纯函数到底是什么?

最佳答案

Purity没有被定义为只关心全局变量,它关心任何不应该被改变的非本地变量(以及更多)。闭包的外部变量仍然算作非局部变量,它不需要是全局变量。

因此,如果 func2 更改了 name,那么它就是不纯的。 func1 是否也因此变得不纯取决于您是否只考虑外部纯度 - 只要 namefunc2 在函数内保持局部,它可能仍然是纯净的。

关于functional-programming - 当我们谈论函数中的函数时,究竟什么是纯函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55815641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com