配列の初期状態をscalaに保存する最良の方法は何ですか?私は作業コピーを操作した後で初期値をリセットすることができます。私はこのようなことをしたいと思っています配列の初期状態を保存してスカラーでリセットする
val initialValue = Array(Array(1,2,3),Array(4,5,6))
val workingCopy = initialValue.clone
問題は、私がworkingCopyの値を変更するときにinitialValueの値も変更することです。
私も
val workingCopy = Array.fill(2,3)(0)
Array.copy(initialValue,0,workingCopy,2)
を試してみましたしかし、私は同じ結果を得ます。
これは、配列を定義するときにval
の代わりにvar
を使用しても保持されます。私は、この浅いコピーの振る舞いは、ネストされた配列構造によって引き起こされるかもしれないと思いますが、それに対処する方法がわかりません。
ほとんどの場合、不変のデータ構造を使いたいと思います。しかし、私のデータは、再帰関数を呼び出すための本当に大きな行列です。関数を再帰的に呼び出すたびに、または毎回引数を渡すたびに新しいオブジェクトを作成したくありません。その場で変更する)。 –
その場合、初期値を不変のリストにして、配列(または他の可変構造)に変換して作業コピーを得ることができます。 –