[플러터/다트] 메모리 주소로 전달되는 List

2021. 1. 23. 00:08·Flutter/Dart

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
'Flutter/Dart' 카테고리의 다른 글
  • [플러터/다트] where 함수 (JS의 Filter)
  • [플러터/다트]map() 함수
  • [다트/플러터] Get, Set 타입
  • [다트/플러터] 클래스 생성자
박유상의 개발블로그
박유상의 개발블로그
개발블로그
  • 박유상의 개발블로그
    박유상의 개발블로그
    박유상의 개발블로그
  • 전체
    오늘
    어제
    • 전체 (134)
      • Who am I (10)
        • Portfolio (4)
        • Reminiscence (5)
        • Oversea (1)
        • SiliconValley (0)
      • React (36)
        • React Basic (15)
        • React Tech (5)
        • JavaScript (7)
        • TypeScript (3)
        • CSS&HTML (3)
        • Firebase (3)
      • NodeJS (1)
        • NodeJS Basic (1)
      • Flutter (55)
        • Flutter Widget Design (5)
        • Flutter Widget Basic (8)
        • Flutter Tech (18)
        • Flutter Issue (7)
        • Flutter Web (6)
        • About Flutter (2)
        • Firebase (1)
        • Dev Env (1)
        • Dart (7)
      • Programming (31)
        • Web (1)
        • General (0)
        • Algorithm (25)
        • Python (1)
        • VS Code (2)
      • Django (0)
  • 블로그 메뉴

    • Who I AM
    • React
    • NodeJS
    • Flutter
    • Programming
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    useTranslation
    Lingory
    DP
    리액트
    JavaScript
    알고리즘
    github
    react
    Flutter
    Firebase
    링고리
    Python
    탐욕법
    HTML
    플러터
    flutter web
    프로그래머스
    Redux
    useRef
    CSS
    포트폴리오
    자바스크립트
    JSON
    TypeScript
    웹
    파이썬
    플러터 웹
    map
    useState
    DART
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박유상의 개발블로그
[플러터/다트] 메모리 주소로 전달되는 List
상단으로

티스토리툴바