본문 바로가기

Flutter

깊은 복사, 얕은 복사

위의 코드는 얕은 복사이고 아래의 코드는 깊은 복사이다.

얕은 복사인 경우 test1에 list1을 복사를 하지만 메모리 주소를 공유합니다.

쉽게 생각하면 얕은 복사 = 공유를 생각하시면 된다.

그래서 밑에 test1의 첫번째 값인 10을 100으로 변경하고 원본인 list1을 찍으면 바뀐 값이 나오는 것을 확인할 수 있다.

 

깊은 복사는 값 전체를 가지고 와서 나는 나고, 너는 너다라고 새각을 하면 됩니다. 때문에 메모리 상의 주소도 완전히 달라진다. 마찬가지로 얕은 복사처럼 원본(list2) 값을 test2 변수에 복사하고 test2의 첫 번째 값을 100으로 변경했는데 원본을 찍었더니 원본 그대로 나온다.

void main() {
  List<int> list1 = [10, 20, 30, 40];
  List<int> test1 = list1;
  test1[0] = 100;
  print(list1);

  List<int> list2 = [10, 20, 30, 40];
  List<int> test2 = [...list2];
  test2[0] = 100;
  print(list2);
}

'Flutter' 카테고리의 다른 글

SliverAppBar  (0) 2022.11.28
TextField - 사용자로 부터 정보를 입력 받는 양식  (0) 2022.11.25
레시피 앱 만들기  (0) 2022.08.17
다트  (0) 2022.08.12
store_app 첫 프로젝트  (0) 2022.08.04