gpt4 book ai didi

scala - 在 Scala 中有没有办法删除可变变量,或者在下面的情况下保留可变变量就可以了?

转载 作者:行者123 更新时间:2023-12-02 05:00:24 25 4
gpt4 key购买 nike

我了解 Scala 完全支持不变性。

现在我在想一个场景,我必须在类等中保存一些状态(通过变量)。稍后我需要更新这些变量;然后我可以稍后重新访问该类以访问更新的变量。

我将尝试通过一个非常简单的示例使其变得简单:

class A {
var x: Int
def compute: Int = {calling some other processes or such using x as input}
}

……

def invoker() {
val a: A = new A
a.x = 1
......
val res1 = a.compute
a.x = 5
......
val res2 = a.compute
......
}

所以你看,我需要不断改变 x 并得到结果。如果你认为我可以简单地将 x 作为计算的参数,例如

def compute(x: Int) 
......

这是个好主意,但我不能这样做,因为我需要将 x 的设置值和完全计算的结果分开。换句话说,设置 x 值不应该触发“计算”的发生,相反,我需要能够在程序中随时设置 x 值,并且能够在我需要的时候在程序中的任何其他时间重用该值进行计算.

在这种情况下,我使用了一个变量 (var x: Int)。这是合法的还是仍然有一些不可变的方式来处理它?<​​/p>

最佳答案

任何时候存储状态都需要使用可变性。

在您的情况下,您希望分别存储 x 和计算。从本质上讲,这意味着状态是必需的,因为 compute 的结果取决于 x

的状态

如果您真的希望带有compute 的类是不可变的,那么其他一些可变类将需要包含x 并且需要将其传递给compute 方法.

关于scala - 在 Scala 中有没有办法删除可变变量,或者在下面的情况下保留可变变量就可以了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845896/

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