gpt4 book ai didi

functional-programming - 什么是破坏性更新?

转载 作者:行者123 更新时间:2023-12-03 23:34:23 25 4
gpt4 key购买 nike

我看到很多与函数式编程相关的主题都提到了破坏性更新。我知道它类似于突变,所以我理解更新部分。但破坏性的部分是什么?还是我只是想多了?

最佳答案

你可能有点想多了。可变性就是它的全部。唯一被“破坏”的是你变异的任何东西的先前值。

假设您正在使用某种搜索树来存储值,并且您想插入一个新的。找到新值所在的位置后,您有两个选择:

  • 使用不可变树,您可以沿着从新值位置到根的路径构建新节点。不在路径上的子树在新树中被重用,如果您仍然有对原始树根的引用,您可以同时使用它们,并在它们之间共享公共(public)子树。如果您有大量略有不同的副本漂浮在各处,这可以节省空间而无需额外的努力,当然您还拥有不可变数据结构的所有常见好处。
  • 使用可变树,您可以将新值附加到它所属的位置,仅此而已;无需更改任何其他内容。这几乎总是更快,并且如果您只有一个副本,则可以节省内存分配,但是任何引用“旧”树的东西现在都引用了新树。原件已销毁;它永远消失了。如果您需要保留原件,则必须在更改之前花费创建整个东西的全新副本的费用。

  • 如果“破坏”似乎是一种不必要的苛刻方式来描述简单的就地更新,那么您可能没有像我调试代码那样花费那么多时间来弄清楚地球上的某个值在您背后改变的地方。

    关于functional-programming - 什么是破坏性更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964233/

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