6.2 Externs
6.2 Externs
Extern은 대상별 상호작용을 타입 안전한 방식으로 기술하는 데 사용할 수 있어요. 일반 클래스처럼 정의되지만 다음이 다릅니다:
class키워드 앞에extern키워드가 온다.- 메서드(methods)는 표현식이 없다.
- 모든 인자와 반환 타입이 명시적이다.
- 기본 가시성(visibility)이
public이다(private는 명시적으로 지정해야 한다).
Haxe 표준 라이브러리의 일반적인 예는 Math 클래스이며, 일부 발췌가 보여줍니다:
extern class Math {
static var PI(default,null):Float;
static function floor(v:Float):Int;
}
extern이 메서드와 변수를 둘 다 정의할 수 있음을 봅니다(실제로 PI는 읽기 전용 속성(property)으로 선언됩니다). 이 정보가 컴파일러에 제공되면, 필드 접근을 그에 따라 허용하고 타입도 알게 됩니다:
class Main {
static public function main() {
var pi = Math.floor(Math.PI);
$type(pi); // Int
}
}
이것은 메서드 floor의 반환 타입이 Int로 선언되어 있기 때문에 동작합니다.
Haxe 표준 라이브러리는 Flash와 JavaScript 대상에 대한 많은 extern을 포함합니다. 이들은 타입 안전한 방식으로 네이티브 API에 접근하게 하고, 더 높은 수준의 API를 설계하는 데 핵심적입니다. haxelib에는 많은 인기 네이티브 라이브러리에 대한 extern도 있습니다.
Flash, JavaScript뿐 아니라 여러 대상의 네이티브 API를 위한 extern을 정의하는 것도 가능합니다. 대상별 처리와 특별한 언어 기능에 관한 정보는 Target Details 절을 참조하세요.
출처: Externs
본문
extern의 정의
extern class는 표현식이 없는 메서드, 명시적 타입, 기본 public 가시성으로 정의됩니다. Math extern처럼 타입 정보를 컴파일러에 제공해 타입 안전한 필드 접근을 가능하게 해요.
용도
표준 라이브러리는 Flash/JS 대상의 네이티브 API에 대한 extern을 포함하고, haxelib에는 많은 네이티브 라이브러리 extern이 있습니다. 대상별 처리와 특수 기능은 Target Details 절 참조.