3.7.2 import
3.7.2 import
.hx 파일에서 타입 경로(type path)를 여러 번 사용한다면, 그것을 줄이기 위해 import를 쓰는 것이 합리적이에요. 그러면 타입을 사용할 때 패키지를 생략할 수 있습니다:
import haxe.ds.StringMap;
class Main {
static public function main() {
// instead of: new haxe.ds.StringMap();
new StringMap();
}
}
첫 줄에서 haxe.ds.StringMap을 import했으므로, main 함수에서 한정되지 않은 식별자 StringMap을 이 패키지로 해석할 수 있어요. 이때 모듈 StringMap이 현재 파일에 import되었다고 말합니다.
이 예제에서 우리는 실제로 모듈을 import하고 있어요. 단지 그 모듈 안의 특정 타입만 import하는 게 아니에요. 즉 import된 모듈 안에 정의된 모든 타입을 사용할 수 있습니다:
import haxe.macro.Expr;
class Main {
static public function main() {
var e:Binop = OpAdd;
}
}
Binop 타입은 모듈 haxe.macro.Expr에 선언된 열거형(enum)인데, 모듈을 import한 후에는 사용할 수 있어요. 만약 그 모듈의 특정 타입만 import했다면, 예를 들어 import haxe.macro.Expr.ExprDef라면, 프로그램은 Class not found : Binop 오류로 컴파일에 실패할 거예요.
import에 대해 알아둘 만한 몇 가지 측면이 있어요:
- 맨 아래쪽 import가 우선순위를 가져요. (Resolution Order에 상세)
- 정적 확장(static extension) 키워드
using은import의 효과를 수반해요. - 열거형이 (직접이든 모듈 import의 일부로든) import되면, 그 열거 생성자(enum constructors)도 모두 import돼요.
출처: Import
본문
import의 기본
import는 타입 경로를 줄이기 위해 사용합니다. import haxe.ds.StringMap; 후에는 StringMap을 직접 쓸 수 있어요.
모듈 import
모듈을 import하면 그 모듈 안의 모든 타입을 사용할 수 있어요. haxe.macro.Expr를 import하면 Binop 같은 하위 타입이 사용 가능해집니다. 특정 타입만 import하면 하위 타입을 찾지 못해 컴파일 오류가 발생합니다.
import의 규칙
- 맨 아래쪽 import가 우선해요.
using은import의 효과를 포함해요.- 열거형을 import하면 그 생성자들도 함께 import됩니다.