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);
  }
}

내부적으로 Mapabstract 타입입니다. 컴파일 타임에 key 타입에 따라 몇 가지 특수 타입 중 하나로 변환됩니다:

  • String: haxe.ds.StringMap
  • Int: haxe.ds.IntMap
  • EnumValue: haxe.ds.EnumValueMap
  • {}: haxe.ds.ObjectMap

Map 타입은 런타임에 존재하지 않으며 위의 객체 중 하나로 대체되었습니다.

Map은 키 타입을 사용해 배열 접근(array access)을 정의합니다.

관련 내용

메서드에 대한 자세한 내용은 Map API를 참조하세요.

Haxe Code Cookbook의 데이터 구조 자습서와 예제.

출처: Map

더 알아보기