배열의 초기 상태를 스칼라로 저장하는 가장 좋은 방법은 무엇인지 궁금해서 작업 복사본을 조작 한 후 초기 값으로 다시 설정할 수 있습니다. 이 같은 것을하고 싶습니다배열의 초기 상태를 저장하고 스칼라로 리셋
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
을 사용하는 경우에도 마찬가지입니다. 이 얕은 복사 동작은 중첩 된 Array 구조로 인해 발생할 수 있다고 생각하지만이를 처리하는 방법을 잘 모르겠습니다.
대부분의 경우, 당신은 불변의 데이터 구조를 사용하고 싶다는 것을 알고 있습니다. 그러나, 내 데이터는 재귀 함수를 호출하려는 정말 큰 매트릭스이며, 재귀 적으로 함수를 호출하거나 매번 인수를 전달할 때마다 새 객체를 생성하고 싶지 않습니다 (훨씬 저렴합니다. 제자리에서 수정). –
이 경우 초기 값을 불변의리스트로 만들고 배열 (또는 다른 가변 구조)으로 변환하여 작업 복사본을 얻을 수 있습니다. –