繁体   English   中英

函数式编程中数据结构和变量的不变性

[英]immutability of data structures and variables in functional programming

通常说在功能编程中,数据结构是不可变的。 我知道不可变数据结构是无法更改的数据结构。

但是,这是否也意味着变量引用也不能更改?

例如,

var arr = [1,2,3]

arr = [4,5,6]

在这段代码中,我没有更改数组[1,2,3],但是创建了一个新数组。 尽管如此,我还是更改了变量“ arr”的引用。 此代码是否遵循不变性数据结构的原理?

您不应该重新分配参考。 理想情况下,您将创建一个新变量,以便可以看到所做的任何更改的“之前和之后”。

但是,即使指向该基础结构的引用发生了更改,其基础结构仍然可以保持不变。 如果有人正在查看结构的旧版本,则重新分配引用不会损害数据的有效性,因为旧版本仍然存在,并且没有变化。

这是否也意味着变量引用也不能更改?

是。 然后,它们被称为常量 你最好写

const arr1 = [1,2,3] 
const arr2 = [4,5,6]

这种方法还允许您将范围环境也视为不可变的数据结构,这应该是默认设置。 它使代码推理变得容易得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM