10.2.1 Array

10.2.1 Array

Array는 요소들의 컬렉션입니다. 이 요소들의 타입에 대응하는 타입 매개변수를 하나 가집니다. Array는 세 가지 방법으로 만들 수 있습니다:

Array는 대부분의 사용 사례를 다루는 API를 제공합니다. 또한 읽기와 쓰기 배열 접근(array access)을 허용합니다:

class Main {
  static public function main() {
    var a = [1, 2, 3];
    trace(a[1]); // 2
    a[1] = 1;
    trace(a[1]); // 1
  }
}

Haxe의 배열 접근은 경계가 없으므로, 즉 예외를 던지지 않는 것이 보장되므로, 추가 논의가 필요합니다:

  • 존재하지 않는 인덱스에 읽기 접근을 하면 타깃 의존적인 값이 반환됩니다.
  • 양수 인덱스로 경계 밖 쓰기 접근을 하면, 마지막 정의 인덱스와 새로 쓰인 인덱스 사이의 모든 위치에 null(또는 정적 타깃에서 기본 타입기본값)이 삽입됩니다.
  • 음수 인덱스로 쓰기 접근을 하면 결과는 지정되지 않습니다.

Array는 요소들에 대한 반복자(iterator)를 정의합니다. 이 반복은 일반적으로 컴파일러가 배열 인덱스를 사용하는 while 루프로 최적화합니다:

class Main {
  static public function main() {
    var scores = [110, 170, 35];
    var sum = 0;
    for (score in scores) {
      sum += score;
    }
    trace(sum); // 315
  }
}

Haxe는 이 최적화된 JavaScript 출력을 생성합니다:

Main.main = function() {
    var scores = [110,170,35];
    var sum = 0;
    var _g = 0;
    while(_g < scores.length) {
        var score = scores[_g];
        ++_g;
        sum += score;
    }
    console.log(sum);
};

매개변수 타입이 Dynamic으로 강제되지 않는 한 Haxe는 혼합 타입의 배열을 허용하지 않습니다:

class Main {
  static public function main() {
    // 컴파일 오류: 혼합 타입 배열은 타입이 Array<Dynamic>으로 강제된 경우에만 허용됨
    // var myArray = [10, "Bob", false];

    // 혼합 타입을 가진 배열
    var myExplicitArray:Array<Dynamic> = [10, "Sally", true];
  }
}
참고: 동적 배열(Dynamic Arrays)

Haxe 2에서는 혼합 타입 배열 선언이 허용되었습니다. Haxe 3에서는 명시적으로 Array<Dynamic>으로 선언된 경우에만 배열이 혼합 타입을 가질 수 있습니다.

관련 내용

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

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

출처: Array

더 알아보기