gpt4 book ai didi

scala - 不可变对象(immutable对象)的缺点

转载 作者:行者123 更新时间:2023-12-04 17:54:19 25 4
gpt4 key购买 nike

我知道不可变对象(immutable对象)比可变对象有几个优点,比如它们比可变对象更容易推理,它们没有随时间变化的复杂状态空间,我们可以自由地传递它们,它们可以制作安全的哈希表键等。所以我的问题是不可变对象(immutable对象)的缺点是什么?

最佳答案

除了可能的性能缺陷(可能!因为 GC 和 HotSpot 优化的复杂性,不可变结构不一定更慢) - 一个缺点可能是现在必须通过整个应用程序线程化状态。对于简单的应用程序或小型脚本,以这种方式维护状态的努力可能太高而无法为您购买并发安全性。

例如,想想像 Swing 这样的 GUI 框架。完全使用不可变结构和一个主要的“不安全”外部循环来编写一个 GUI 框架绝对是可能的,我猜这已经在 Haskell 中完成了。例如,可以使用镜头解决维护嵌套不可变状态的一些问题。但是管理所有交互(注册监听器等)可能会非常复杂,因此您可能想要引入新的抽象,例如功能响应式(Reactive)或混合响应式(Reactive) GUI。

基本上你会失去一些 OO 的封装,因为这一切都是不可变的,当这成为一个问题时,有替代方法,如 Actor 或 STM。

关于scala - 不可变对象(immutable对象)的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34507864/

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