2.3 열거 인스턴스(Enum Instance)

2.3 열거 인스턴스(Enum Instance)

Haxe는 강력한 열거형(enum) 타입을 제공하는데, 이것은 실제로 **대수적 데이터 타입(algebraic data type, ADT)**이에요. 표현식(expressions)을 가질 수는 없지만, 데이터 구조를 기술하는 데 매우 유용합니다:

enum Color {
  Red;
  Green;
  Blue;
  Rgb(r:Int, g:Int, b:Int);
}

의미론적으로 이 열거형은 빨강, 초록, 파랑 또는 특정 RGB 값 중 하나인 색상을 기술해요. 구문 구조는 다음과 같습니다:

  • enum 키워드는 열거형을 선언한다는 뜻이에요.
  • Color는 열거형의 이름이며, 타입 식별자 규칙을 따르는 아무 이름이든 될 수 있어요.
  • 중괄호 {} 안에는 **열거 생성자(enum constructors)**가 들어 있는데,
  • 인자를 받지 않는 Red, Green, Blue
  • r, g, b라는 세 개의 Int 인자를 받는 Rgb가 있어요.

Haxe 타입 시스템은 모든 열거형 타입과 유니파이되는 타입을 제공합니다:

정의: Enum<T> — 이 타입은 모든 열거형 타입과 호환됩니다. 컴파일 타임에 Enum<T>는 모든 열거형 타입의 공통 기반 타입으로 볼 수 있어요. 하지만 이 관계는 생성된 코드에는 반영되지 않습니다.

출처: Enum Instance

본문

대수적 데이터 타입으로서의 열거형

Haxe의 열거형은 여러 변형(variant) 중 하나를 나타내는 대수적 데이터 타입이에요. 각 열거 생성자는 서로 다른 형태의 값을 표현할 수 있습니다. Rgb(r, g, b)처럼 값을 담는 생성자도 있어요.

열거형의 활용

열거형은 데이터 구조를 명확하고 안전하게 표현하는 데 탁월해요. 색상, 상태, 방향처럼 유한한 값의 집합을 모델링할 때 특히 유용하며, 패턴 매칭과 함께 사용하면 강력한 코드를 작성할 수 있습니다.

더 알아보기