Swift 모듈 시스템¶
Swift에서 모듈은 코드 공유의 기본 단위로 타입/함수/전역 변수 선언을 제공한다. import로 모듈을 가져오며 선택적 임포트도 가능하다.
"모듈"의 6가지 의미¶
- 선언 컨테이너: 타입, 함수, 전역 변수를 담는 단위
- 네임스페이스:
Chess.Board처럼 qualified name으로 선언 구분 - 컴파일 단위: 여러 소스 파일이 하나의 모듈을 구성
- 코드 포함: 함수 구현을 포함하여 인라이닝 최적화 가능
- re-export 메커니즘:
@exported import로 다른 모듈을 재노출 - Clang 모듈 연동: C/Objective-C 헤더를 Swift 타입으로 노출
핵심 개념¶
- 모듈 이름은 전역 유일, mangled name에 포함되므로 변경은 ABI 파괴적
- 동일 모듈 내 소스 파일 선언은 암시적 상호 가시
- 이름 충돌 시 현재 파일 > 같은 모듈 > selective > non-selective import 우선순위
관련 페이지: serialization, overview, glossary-compiler