Maps

일반적으로 맵은 key와 value를 연결하는 개체입니다. 키와 값 모두 모든 타입이 가능합니다. 각 key는 고유하지만 value는 동일한 값을 여러 번 사용할 수 있습니다. 맵에 대한 Dart 지원은 맵 리터럴 및 타입으로 제공됩니다.

다음은 맵 리터럴을 사용하여 만든 몇 가지 간단한 Dart 맵입니다.

var gifts = {
  // Key:    Value
  'first': 'partridge',
  'second': 'turtledoves',
  'fifth': 'golden rings'
};

var nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};

Note: Dart는 gifts 타입이 Map<String, String>이고 nobleGases 타입 Map<int, String>이라고 추론합니다. 맵에 잘못된 타입의 값을 추가하려고 하면 컴파일 또는 런타임에서 오류가 발생합니다. 자세한 내용은 type inference에 대해 읽어보세요.

Map 생성자를 사용하여 동일한 객체를 생성할 수 있습니다.

var gifts = Map<String, String>();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';

var nobleGases = Map<int, String>();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';

Note: C# 또는 Java와 같은 언어의 경험이 있다면 Map() 대신 new Map()을 예상할 수 있습니다. Dart에서 new 키워드는 선택 사항입니다. 자세한 내용은 Using constructors을 참조하세요.

아래 첨자 할당 연산자([]=)를 사용하여 기존 맵에 새 key-value 쌍을 추가합니다.

var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds'; // key-value 쌍을 추가

아래 첨자 연산자([])를 사용하여 맵에서 값을 검색합니다.

var gifts = {'first': 'partridge'};
assert(gifts['first'] == 'partridge');

맵에 없는 키를 찾으면 null이 반환됩니다.

var gifts = {'first': 'partridge'};
assert(gifts['fifth'] == null);

.length를 사용하여 맵에서 key-value 쌍의 수를 가져옵니다.

var gifts = {'first': 'partridge'};
gifts['fourth'] = 'calling birds';
assert(gifts.length == 2);

Maps는 lists와 마찬가지로 스프레드 연산자(......?)와 iffor 컬렉션을 지원합니다. 자세한 내용과 예제는 spread operator proposalcontrol flow collections proposal 을 참조하세요.

맵에 대한 자세한 내용은 generics 섹션과 Maps API에 대한 라이브러리 투어를 참조하세요.

Last updated