我了解 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)。这是合法的还是仍然有一些不可变的方法来处理它?