Dart의 List는 매개변수, '= '등 으로 전달시 메모리 주소 값으로 전달되어
이름이 다르더라도 한 곳에서 요소를 변경하면 모두 다 변경된다.
예제1
void main() {
List pointer = [1,2,3];
myClass myclass = myClass(pointer);
myclass.reverse();
print(pointer.toString());
}
class myClass{
myClass(this.pointer);
List pointer;
void reverse(){
for(int i =0; i<pointer.length; i++){
pointer[i] = 0;
}
}
}
결과1
[1,2,3]을 매개변수로 전달하고 전달받은 곳에서 요소 값을 모두 0으로 변경했다.
그 결과 원본 List도 변경되었다.
예제2
void main() {
List orderList = [1,2,3];
List zeroList = orderList;
for(int i=0 ; i < zeroList.length; i++){
zeroList[i] = 0;
}
print(orderList.toString());
}
결과2
zeroList의 값을 변경했음에도 원본인 orderList의 값도 함께 변경되었음을 알 수 있다.
요소 값을 그대로 사용하는 법
void main() {
List orderList = [1,2,3];
//toList()를 사용한다
List zeroList = orderList.toList();
for(int i=0 ; i < zeroList.length; i++){
zeroList[i] = 0;
}
print(orderList.toString());
}
전달해주는 원본 List 뒤에 toList() 함수를 사용한다.
그 결과 원본 List가 변경되지 않는다.
'Flutter > Dart' 카테고리의 다른 글
[플러터/다트] where 함수 (JS의 Filter) (1) | 2021.01.25 |
---|---|
[플러터/다트]map() 함수 (0) | 2021.01.23 |
[다트/플러터] Get, Set 타입 (0) | 2021.01.20 |
[다트/플러터] 클래스 생성자 (0) | 2021.01.19 |
[플러터/다트] 열거 타입 enum (0) | 2021.01.14 |