Scala が不変性を完全に受け入れていることは理解しています。
今、クラスなどで(変数を介して)何らかの状態を保持する必要があるというシナリオを考えています。これらの変数は後で更新する必要があります。後でクラスに戻って、更新された変数にアクセスできます。
非常に単純な例を 1 つ使用して、簡単に説明します。
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) を使用しています。これは正当なものですか、それとも不変の処理方法がまだありますか?