6.2.1 네이티브 메타데이터(Native Metadata)
6.2.1 네이티브 메타데이터(Native Metadata)
extern을 만들 때 특정 필드가 Haxe 키워드와 충돌할 수 있는데, 그 필드가 주어진 대상에 대해 유효한 식별자일지라도 그래요. 이런 문제는 충돌하는 필드에 의도된 식별자를 매개변수로 제공하는 :native 메타데이터를 붙여 해결할 수 있어요.
extern class A {
public function new();
@:native("final") var final_:Int;
}
class Main {
public static function main():Void {
var a = new A();
a.final_ = 3;
}
}
생성된 JavaScript 출력이 실제로 final 필드에 할당하는 것을 보여줍니다:
(function ($global) { "use strict";
var Test = function() { };
Test.main = function() {
new A().final = 3;
};
Test.main();
})({});
이 메타데이터는 클래스와 인터페이스 필드에 적용할 수 있지만, 구조체 타입의 필드에는 적용할 수 없어요.
출처: Native Metadata
본문
:native("이름") 메타데이터로 extern 필드의 네이티브 이름을 지정해, Haxe 키워드와 충돌하는 필드도 대상에서 올바른 이름으로 생성되게 합니다. 클래스/인터페이스 필드에 적용 가능하고 구조체 필드에는 안 됩니다.