위의 코드는 얕은 복사이고 아래의 코드는 깊은 복사이다.
얕은 복사인 경우 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 |