10.2.5 Map
10.2.5 Map
Map은 키, 값 쌍으로 구성된 컨테이너입니다. Map은 연관 배열(associative array), 사전(dictionary), 심볼 테이블(symbol table)이라고도 불립니다. 다음 코드는 map 작업의 짧은 예를 보여줍니다:
class Main {
static public function main() {
// Map은 배열처럼 초기화되지만
// '=>' 연산자를 사용하는 map 리터럴 구문을 사용합니다.
// Map은 키 값 타입을 명시적으로 정의할 수 있습니다.
var map1:Map<Int, String> = [1 => "one", 2 => "two"];
// 또는 키 값 타입을 추론할 수 있습니다.
var map2 = ["one" => 1, "two" => 2, "three" => 3];
$type(map2); // Map<String, Int>
// 키는 유일해야 합니다.
// 오류: 중복 키(Duplicate Key)
// var map3 = [1=>"dog", 1=>"cat"];
// Map 값은 배열 접근자 "[]"를 사용해 접근할 수 있습니다.
var map4 = ["M" => "Monday", "T" => "Tuesday"];
trace(map4["M"]); // Monday
// Map은 기본적으로 값들을 반복합니다.
for (value in map4) {
trace(value); // Monday
Tuesday
}
// keys() 메서드를 사용해 키들을 반복할 수 있습니다.
for (key in map4.keys()) {
trace(key); // M, T를 추적
}
// 배열처럼 컴프리헨션을 사용해 새 Map을 만들 수 있습니다.
var map5 = [
for (key in map4.keys())
key => "FRIDAY!!"
];
// {M => FRIDAY!!, T => FRIDAY!!}
trace(map5);
}
}
내부적으로 Map은 abstract 타입입니다. 컴파일 타임에 key 타입에 따라 몇 가지 특수 타입 중 하나로 변환됩니다:
String:haxe.ds.StringMapInt:haxe.ds.IntMapEnumValue:haxe.ds.EnumValueMap{}:haxe.ds.ObjectMap
Map 타입은 런타임에 존재하지 않으며 위의 객체 중 하나로 대체되었습니다.
Map은 키 타입을 사용해 배열 접근(array access)을 정의합니다.
관련 내용
메서드에 대한 자세한 내용은 Map API를 참조하세요.
Haxe Code Cookbook의 데이터 구조 자습서와 예제.
출처: Map