in-package — 현재 패키지 바꾸기
in-package — 현재 패키지 바꾸기
여러 패키지로 나눠 관리하는 프로젝트에서, "이제부터 이 파일은 이 패키지에서 작성할 거야"라고 선언하고 싶을 때가 있어요. 파일의 맨 위에 in-package를 써두면 그 다음부터 현재 패키지가 바뀌어요. 파일의 패키지를 지정하는 가장 일상적인 매크로예요.
본문
in-package는 name이 가리키는 패키지를 현재 패키지로 만드는 매크로예요. 현재 패키지는 특수 변수 *package*에 담겨 있어요.
in-package name
=> package
name은 문자열 지시자(string designator)로, 평가되지 않아요. 지정한 패키지가 이미 존재하면 그 패키지가 현재 패키지가 되고 그 자체가 반환돼요. 존재하지 않는 이름이면 package-error 타입의 오류가 신호돼요.
in-package 폼이 **최상위 폼(top level form)**으로 나타나면, 런타임에 하는 일이 컴파일 시점에도 똑같이 수행돼요. 즉 컴파일할 때에도 *package*가 할당된다는 뜻이에요. 그 덕분에 파일 아래쪽 코드가 무엇을 뜻하는지는 컴파일러도 같은 패키지 기준으로 해석할 수 있어요.
예외 상황
지정한 패키지가 존재하지 않으면 package-error 타입의 오류가 신호돼요.
함께 보기
*package*