반응형
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 |