gpt4 book ai didi

scala - Scala 中的 val-mutable 与 var-immutable

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

Scala 中是否有关于何时将 val 与可变集合一起使用以及何时将 var 与不可变集合一起使用的指导原则?或者你真的应该以不可变集合为目标 val 吗?

事实上,两种类型的收藏都给了我很多选择,但我常常没有知道如何做出选择。

最佳答案

这是一个很常见的问题。困难的是找到重复项。

您应该努力实现引用透明度。这意味着,如果我有一个表达式“e”,我可以创建一个 val x = e,并将 e 替换为 x 。这是可变性破坏的属性。每当您需要做出设计决策时,请最大限度地提高引用透明度。

实际上,方法局部 var 是现有的最安全的 var,因为它不会转义该方法。如果方法很短,那就更好了。如果不是,请尝试通过提取其他方法来减少它。

另一方面,可变集合有可能逃逸,即使它没有。更改代码时,您可能希望将其传递给其他方法或返回它。这就是破坏引用透明度的事情。

在一个对象(一个字段)上,几乎会发生同样的事情,但会带来更可怕的后果。无论哪种方式,对象都会有状态,因此会破坏引用透明度。但是拥有一个可变集合意味着即使是对象本身也可能失去对谁正在更改它的控制。

关于scala - Scala 中的 val-mutable 与 var-immutable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386559/

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