🔥 소개

199자
3분

프로그래밍을 하다 보면 때로는 타입에 대한 세부 정보를 숨겨야 할 때가 있습니다. 특히 모듈과 그 모듈을 호출하는 코드 사이의 경계에서는 반환 값의 실제 타입을 비공개로 유지하는 것이 유용하죠. 이럴 때 Swift는 두 가지 방법을 제공하는데, 바로 불투명 타입(Opaque Type)과 박스형 프로토콜 타입(Boxed Protocol Type)입니다.

불투명 타입을 반환하는 함수나 메서드는 반환 값의 구체적인 타입 정보를 감춥니다. 반환 타입으로 구체적인 타입을 제공하는 대신, 반환 값이 지원하는 프로토콜을 기준으로 서술되는 거죠. 불투명 타입은 타입의 정체성을 보존하기에, 컴파일러는 타입 정보에 접근할 수 있지만 모듈의 클라이언트는 접근할 수 없습니다.

한편, 박스형 프로토콜 타입은 주어진 프로토콜을 준수하는 모든 타입의 인스턴스를 저장할 수 있습니다. 하지만 박스형 프로토콜 타입은 타입의 정체성을 보존하지 않아요. 값의 구체적인 타입은 런타임까지 알 수 없으며, 시간이 지남에 따라 다른 값이 저장되면서 변경될 수도 있습니다.

이렇게 Swift는 불투명 타입과 박스형 프로토콜 타입이라는 두 가지 방식으로 타입 정보를 은닉할 수 있는 기능을 제공하고 있습니다. 이를 통해 모듈 내부의 구현 세부 사항을 캡슐화하고, 모듈 사용자에게는 필요한 정보만 노출할 수 있게 되는 것이죠. 코드의 안전성과 유지보수성을 높이는 데 큰 도움이 될 것입니다.

앞으로 이 장에서는 불투명 타입과 박스형 프로토콜 타입에 대해 더욱 자세히 알아보도록 하겠습니다. 각각의 개념과 사용법, 그리고 실제 코드에서의 활용 예시까지 살펴볼 텐데요. 여러분도 함께 Swift의 타입 은닉 기능을 마스터해 보시길 바랍니다!