gpt4 book ai didi

functional-programming - 函数式编程中的 "immutable variable"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 23:56:30 24 4
gpt4 key购买 nike

我是函数式编程的新手,我不了解不变性的概念;例如一个不可变的变量。
例如,在 Standard ML (SML):

val a = 3
val a = a + 1
第二行不会“改变”变量 a 的值。 ;然而,之后, a等于 4 .有人可以解释一下吗?
另外,“无突变”(不变性)有什么好处?

最佳答案

当我们说一个变量是不可变的时,我们的意思是它自己的值不能改变。你在那里展示的东西

val a = 3
val a = a+1

是: a 的新值只是“遮蔽”了 a 的旧值. a只是一个绑定(bind)到 3 的名称,在第二行中,它绑定(bind)到 4 . a 的旧值仍然存在,只是无法访问。

如果您使用某种数据结构,则可以更明显地看到这一点。没有像您在许多其他语言中看到的那样的 mutator 方法。例如,如果您有一个列表 val L = [1,2,3] ,则无法更改 L 中的第一个值.您将不得不遮蔽 L完全,并创建一个新列表来覆盖旧列表。

因此,每次您绑定(bind)一个新的值声明时,它都会创建一个包含所有当前名称/值绑定(bind)的新环境。这些绑定(bind)都不能更改,它们只是被遮蔽了。

关于functional-programming - 函数式编程中的 "immutable variable"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653738/

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