앱 만들기 프로젝트/Dart

Dart - 2.4 Maps

지나가는물리학부생 2023. 3. 7. 21:55
반응형

Dart에서의 Map은 Javascript와 Typescript의 object, Python의 dictionary 같은 것이다.

(믈론, 나는 Javascript와 Typescript는 모른다. 강의에서 그렇다고 한다.)

'key'와 'value'를 갖는다. 아래와 같이 선언할 수 있다.

  var player = {
    'name': 'nico',
    'xp': 19.99,
    'superpower': false,
  };

딱 보면 익숙하지 않은가? 왼쪽이 key, 오른쪽이 value이다.

이렇게 정의 내리면 player의 타입은? Type: Map<String, Object>

'key'는 String이고, 'value'는 Object이라고 쓰여 있다.

그러면 Object 는 뭘까?'

Object는 string, int 등등 아무거나 들어올 수 있음을 의미한다.(dynamic이 떠오르는구만)

value에 있는 값들을 모두 string으로 바꾸면?(아래 코드 블럭과 같이 바꾸면?)

  var player2 = {
    'name': 'nico',
    'xp': '19.99',
    'superpower': 'false',
  };

이렇게 바꾸고 타입을 확인하면 Map<String,String> 으로 바뀌는 것을 알 수 있다.

 

그리고... map에 key-value 쌍을 추가하려면 다음과 같이 하면 된다.

  player['omg'] = 10;

아래와 같이 map으로 직접 정의할 수도 있다.

  Map<int, bool> player3 = {
    1: true,
    2: false,
  };

이를 활용하면 아래같은 이상한 것들도 만들 수 있다.

  Map<List<int>, bool> OMG = {
    [1, 2, 3, 4]: true,
  };
  List<Map<String, Object>> OMG2 = [
    {'name': 'nico', 'xp': 20000},
    {'name': 'nico', 'xp': 20000},
  ];

 NomadCoders 강의에서는 이렇게 복잡하게 하는 것 보다는, class로 관리하는 것이 훨씬 편할 것이라고 말했다.

딱 봐도 그럴 것 같이 생겼다. 읽을라면 읽겠지만, 복잡해보이고 쓸데없이 어려워 보인다.

 

그리고, 특정 key의 value를 불러오기 위해서는 아래처럼 하면 된다.

player['name'];

 

딱 봐도. 많이 쓰지는 않을 것 같다.

 

반응형

'앱 만들기 프로젝트 > Dart' 카테고리의 다른 글

Dart - 3.0 Defining a Function  (0) 2024.10.14
Dart - 2.5 Sets  (0) 2023.03.07
Dart - 2.3 Collection For  (0) 2023.03.07
Dart - 2.2 String Interpolation  (0) 2023.03.07
Dart - 2.1 Lists  (1) 2023.03.06