- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我了解到纯函数是不会改变全局状态的函数,句号。如果这是真的,函数内的函数可以改变外部函数的状态并且仍然是纯粹的,对吗?
例子:
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.
}
}
这是不好的,因为:
问题是:当我们谈论函数中的函数时,纯函数到底是什么?
最佳答案
Purity没有被定义为只关心全局变量,它关心任何不应该被改变的非本地变量(以及更多)。闭包的外部变量仍然算作非局部变量,它不需要是全局变量。
因此,如果 func2
更改了 name
,那么它就是不纯的。 func1
是否也因此变得不纯取决于您是否只考虑外部纯度 - 只要 name
和 func2
在函数内保持局部,它可能仍然是纯净的。
关于functional-programming - 当我们谈论函数中的函数时,究竟什么是纯函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55815641/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
osgi R4 规范中关于“初始配置第 231 页”的讨论 '请求的结果必须是 ZIP 文件(内容类型应用程序/ZIP)'...'zip 文件只能包含四种类型的字典条目:文本、二进制、 bundle
在下面的链接中 http://www.faqs.org/docs/Linux-HOWTO/NFS-HOWTO.html 它说一个进程除非被“sure kill”才能杀死,但是什么是sure kill?
这个问题在这里已经有了答案: "uses of target_link_libraries must be either all-keyword or all-plain" (2 个回答) 2年前关闭
考虑以下扩展方法: public static void Toggle(this ref bool @bool) => @bool = !@bool; public static void Toggl
根据 C++03 标准 1.9/5 A conforming implementation executing a well-formed program shall produce the same
我是一名优秀的程序员,十分优秀!