🔥 소개

178자
3분

Swift에서는 Extension이라는 강력한 기능을 제공합니다. Extension을 사용하면 기존 클래스, 구조체, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있죠. 심지어 여러분이 직접 소스 코드에 접근할 수 없는 타입들도 확장할 수 있답니다. 이를 retroactive modeling이라고 부릅니다. 이는 마치 Objective-C의 category와 유사하지만, Swift의 extension은 이름이 없다는 점이 다릅니다.

Swift의 extension을 통해 할 수 있는 일은 정말 다양해요:

  • 계산된 인스턴스 속성과 타입 속성을 추가할 수 있습니다.
  • 인스턴스 메서드와 타입 메서드를 정의할 수 있죠.
  • 새로운 이니셜라이저를 제공할 수도 있고요.
  • 서브스크립트를 정의하는 것도 가능합니다.
  • 새로운 중첩 타입을 정의하고 사용할 수 있습니다.
  • 기존 타입이 특정 프로토콜을 준수하도록 할 수도 있죠.

놀랍게도 Swift에서는 프로토콜조차도 extension을 통해 요구사항의 기본 구현을 제공하거나, 프로토콜을 채택한 타입들이 활용할 수 있는 추가적인 기능을 제공할 수 있습니다. 자세한 내용은 Protocol Extensions 섹션을 참고해 주세요.

Extension은 Swift 언어의 확장성을 극대화하는 매우 강력한 도구입니다. 우리는 extension을 통해 기존 코드를 수정하지 않고도 원하는 기능을 유연하게 추가할 수 있게 됩니다. 이는 코드의 재사용성을 높이고, 모듈화된 구조를 만드는데 크게 기여하죠. Extension이 제공하는 다양한 기능들을 잘 활용한다면 더욱 간결하고 표현력 있는 코드를 작성할 수 있을 거예요. 지금부터 extension의 세계로 빠져보시죠!

YouTube 영상

채널 보기
Product와 Coproduct가 Bifunctor인 이유 | 프로그래머를 위한 카테고리 이론
NestJS 가드, 바이딩과 스코프 | NestJS 가이드
펑터 합성 | 프로그래머를 위한 카테고리 이론
클로드 섀넌이 들려주는 정보 이론 이야기
미들웨어 vs 가드, 왜 NestJS에서는 가드가 더 똑똑할까? | NestJS 가이드
class-validator 와 DTO | NestJS 가이드
변환 파이프로 컨트롤러 코드 깔끔하게 만들기 | NestJS 가이드
C++ 속의 펑터 | 프로그래머를 위한 카테고리 이론