각 파일은 하나의 모듈입니다. 진입 파일과 그가 불러오는 모듈만 하나의 컴파일 단위를 이루며, 이름은 기본적으로 해당 모듈 안에서만 보입니다.
정책
import a.b는 마지막 경로 조각을 이름공간으로 가져오며 as로 이름을 바꿀 수 있습니다. import a.b { name, other as local }은 공개된 이름만 선택합니다. export는 하나의 선언이나 바인딩 앞에 붙입니다. 모듈 경로는 루트 아래의 실제 파일 경로와 일치하는 점 구분 식별자입니다.
명시된 동작
가져온 모듈은 의존 순서대로 한 번만 초기화되며 진입 파일보다 먼저 실행됩니다. 모든 import 관계는 순환 참조 검사에 포함됩니다. 가져온 이름은 변경할 수 없고, 선택한 명목 타입은 정의된 모듈의 정체성을 유지합니다. 가져오는 모듈의 최상위에는 선언과 바인딩만 둘 수 있고 자유 실행 문장은 둘 수 없습니다.
제약과 명시적 거부
부수 효과만을 위한 import, use, 문자열 경로, 별칭과 선택을 함께 쓰는 형식, 공개 목록, 와일드카드 공개, 재공개, export let mut, 순환 참조, 루트 밖 경로, 비공개 멤버 접근은 거부됩니다.
유예 경계
패키지 매니페스트와 레지스트리 의존성, 여러 루트 빌드, 패키지 가시성, 재공개, 부수 효과용 가져오기, 타입만의 순환 참조 예외는 현재 언어 문법에 포함되지 않습니다. 패키지 도구의 자세한 동작은 도구 모음 문서에서 다룹니다.
예제
TOPAZ
import math { add as sum }
import text.format as fmt
export function total(left: int, right: int) -> int {
return sum(left, right)
}
let label = fmt.number(total(2, 3))