네임스페이스

네임스페이스 (Namespace)

Zig에서 코드 조각들을 한데 묶는 방식, 네임스페이스에 대해 알아볼게요. 네임스페이스가 무엇인지, 어떤 것들이 만들어내는지, 그리고 흔히 헷갈리기 쉬운 블록(block)과는 어떻게 다른지 차근차근 살펴보죠.

출처: Zig Documentation

본문

Zig에서 네임스페이스는 네 가지 선언으로 만들어져요. 바로 struct, enum, union, opaque가 그 주인공이죠.

이 네임스페이스들은 세 가지를 담아요. 하나는 네임스페이스 레벨 변수(Namespace Level Variables)이고, 또 하나는 함수 선언(function declarations), 그리고 마지막으로 comptime 블록이에요.

여기서 한 가지 꼭 짚고 넘어갈 부분이 있어요. 네임스페이스도 정의를 중괄호(curly braces)로 감싸긴 하지만, 이걸 블록(blocks)이나 함수 본문(function body)과 혼동하면 안 돼요. 생김새만 비슷하지 역할은 완전히 다른 녀석들이랍니다.

그리고 Zig의 흥미로운 특징 하나. 모든 Zig 소스 파일은 암시적으로 하나의 struct예요. 겉보기에는 struct 키워드와 중괄호가 없어 보이지만, 그 구조를 그대로 물려받는 거죠. 파일 하나가 곧 하나의 네임스페이스가 되는 셈이에요.

더 알아보기