12.6.8.1 값 타입(Value Types)
12.6.8.1 값 타입(Value Types)
extern class 주석 처리된 값 타입은 C++에서 (스택이나 값으로) 값으로 전달되는 타입을 나타냅니다. 컴파일러는 이 타입이 메모리에서 C++의 해당 타입과 정확히 같은 레이아웃을 가진다고 가정합니다. 값 타입 extern은 내부에 포인터가 있더라도 참조 타입(reference type)으로 사용될 수 없습니다.
값 타입으로 선언된 extern 클래스나 enum은 다음 제한을 가집니다:
- 생성자(
new)가 있어야 하며, 이는 선언된 생성자입니다. - 정적 메서드는 인스턴스 필드를 수정할 수 있습니다.
- 인스턴스 메서드는
this를 받습니다. - 값 타입은 nullable이 아니며 null이 될 수 없습니다.
값 타입의 namespace와 type 필드 외에 유효한 flags는 다음과 같습니다:
StackOnly- 이 타입이 힙에 승격되는 것을 금지합니다. 이는Null<T>, 클래스 필드,Dynamic으로의 변환 등을 금지합니다.NotMutableFields- 필드가 변경 불가능하다는 것을 나타냅니다.NativeStruct- 타입이 C++ 구조체로 표현된다는 것을 나타냅니다.
값 타입 extern의 예:
@:cpp.ValueType({ namespace : [ 'bar' ], type : 'Foo' })
extern class Bar {
function new():Void;
function get():Int;
}
출처: Value Types