簡體   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