🔥 중첩 타입 참조하기

249자
4분

중첩 타입을 정의된 컨텍스트 외부에서 사용하려면 어떻게 해야 할까요? 간단합니다! 그냥 중첩 타입의 이름 앞에 그 타입이 중첩된 타입의 이름을 접두사로 붙이면 돼요.

let heartsSymbol = BlackjackCard.Suit.hearts.rawValue
// heartsSymbol은 "♡"
swift

위의 예제에서 볼 수 있듯이, 이런 방식으로 Suit, Rank, Values의 이름을 의도적으로 짧게 유지할 수 있어요. 왜냐하면 그들의 이름은 정의된 컨텍스트에 의해 자연스럽게 한정되기 때문이죠.

이렇게 중첩 타입을 참조할 때는 마치 파일 시스템의 경로처럼 상위 타입의 이름을 차례로 붙여나가면서 원하는 타입에 도달하게 됩니다. 이 과정을 좀 더 자세히 살펴볼까요?

// BlackjackCard 구조체 내부의 Suit 열거형 타입에 접근
let clubsSymbol = BlackjackCard.Suit.clubs.rawValue
// clubsSymbol은 "♣"
 
// BlackjackCard 구조체 내부의 Rank 열거형 타입에 접근
let queen = BlackjackCard.Rank.queen
// queen은 BlackjackCard.Rank.queen
 
// Rank 열거형 내부의 Values 구조체 타입에 접근
let aceValues = BlackjackCard.Rank.ace.values
// aceValues는 Values(first: 1, second: 11)
swift

위의 예제에서 볼 수 있듯이, 점(.) 표기법을 사용하여 원하는 중첩 타입에 단계적으로 접근할 수 있습니다. 이런 방식으로 중첩 타입을 참조하면 코드의 가독성과 명확성이 높아지는 효과가 있어요.

특히 같은 이름의 타입이 여러 컨텍스트에 존재할 때, 이런 방식의 참조는 매우 유용합니다. 예를 들어, 서로 다른 구조체 내부에 Color라는 열거형이 각각 정의되어 있다고 해보죠. 이때 StructA.Color.redStructB.Color.red처럼 참조하면 어떤 Color 타입의 red를 말하는 건지 명확히 구분할 수 있게 됩니다.

중첩 타입을 잘 활용하면 코드의 구조와 의미를 더욱 명확하게 표현할 수 있어요. 그리고 이렇게 정의된 중첩 타입을 외부에서 참조할 때는 위에서 살펴본 것처럼 상위 타입의 이름을 접두사로 붙여주는 것만 기억하시면 될 거예요. 여러분의 코드에서도 중첩 타입을 적극 활용해보시는 건 어떨까요? 더욱 읽기 좋고 의미 있는 코드를 작성할 수 있을 거예요!