2.4 익명 구조체(Anonymous Structure)

2.4 익명 구조체(Anonymous Structure)

익명 구조체는 이름 없는 타입으로, 구조적 서브타이핑을 가능하게 하는 핵심이에요. 구조체는 이름 있는 필드의 모음으로, 중괄호 {} 안에 필드들을 기술합니다:

typedef Point = {
    x : Int,
    y : Int
};

Point 타입은 x:Inty:Int 두 필드를 가지는 구조를 정의해요. typedef는 타입에 이름을 붙이는 방법이며, 구조체 타입이 아닌 다른 타입에도 사용할 수 있어요.

구조체 리터럴은 필드 이름과 값을 :로 연결해 만들 수 있어요:

var p = { x: 1, y: -5 };

Haxe의 타입 시스템은 구조체를 기반으로 한 구조적 서브타이핑을 지원해서, 구조가 호환되는 타입끼리 할당이 가능해집니다. 구조체 타입을 다루는 구체적인 문법과 규칙은 다음 절들에서 설명합니다:

출처: Anonymous Structure

본문

익명 구조체란

익명 구조체는 이름 없는 구조 타입으로, 이름 있는 필드들의 모음이에요. 클래스처럼 메서드 대신 필드만 가질 수 있고, 값의 묶음을 표현하는 데 유용합니다. typedef로 이름을 붙이면 재사용할 수 있어요.

구조적 서브타이핑의 기반

익명 구조체는 Haxe의 구조적 서브타이핑을 가능하게 하는 토대예요. 두 타입의 구조(필드 집합)가 호환되면, 명시적인 상속 관계 없이도 서로 호환된다고 판단합니다. 이는 유니피케이션 절에서 더 자세히 설명합니다.

구조체 리터럴

{ x: 1, y: -5 }처럼 중괄호 안에 필드명과 값을 써서 구조체 값을 만들 수 있어요. 리터럴의 타입은 쓰인 필드들에 의해 추론됩니다.

더 알아보기