본문 바로가기

개발

Swift 확장 (Extensions)

728x90

Swift 확장 (Extensions)

Swift 확장은 기존 타입에 새로운 기능을 추가하는 강력한 기능입니다. 상속과 달리 기존 코드를 변경하지 않고도 새로운 기능을 추가할 수 있어 코드의 유연성과 재사용성을 높일 수 있습니다.

1. 기본 구조

Swift

extension ExistingType {

    // 새로운 프로퍼티, 메서드, 서브스크립트 등을 정의

}
  • ExistingType: 확장을 적용할 기존 타입입니다.
  • { }: 확장 블록을 감싸는 블록입니다.
  • // 새로운 프로퍼티, 메서드, 서브스크립트 등을 정의: 기존 타입에 추가할 새로운 기능들을 정의합니다.

2. 활용 사례

  • 기존 타입에 새로운 기능 추가: 기존 타입에 부족한 기능을 확장을 통해 추가하여 코드를 보완할 수 있습니다.
  • 코드 재사용: 여러 타입에 공통적으로 사용할 수 있는 기능을 확장으로 정의하여 코드 중복을 줄일 수 있습니다.
  • 데이터 구조에 편의 기능 추가: 데이터 구조를 사용하기 더욱 편리하게 하도록 새로운 메서드나 프로퍼티를 추가할 수 있습니다.
  • 기존 API 호환: 서로 다른 API를 사용하는 코드를 확장을 통해 호환시킬 수 있습니다.

3. 종류

  • 구조체 확장: 구조체에 새로운 기능을 추가합니다.
  • 클래스 확장: 클래스에 새로운 기능을 추가합니다.
  • 열거형 확장: 열거형에 새로운 기능을 추가합니다.
  • 프로토콜 확장: 프로토콜에 새로운 기능을 추가합니다.

4. 예시

extension Int {

    func isEven() -> Bool {

        self % 2 == 0

    }



    func isOdd() -> Bool {

        !isEven()

    }

}



let number = 10



if number.isEven() {

    print("\(number)은 짝수입니다.")

} else {

    print("\(number)은 홀수입니다.")

}

 

5. 참고 자료

주의: 확장을 사용할 때는 기존 코드와의 호환성을 고려하고 명확한 코드 작성 방식을 유지하는 것이 중요합니다. 또한, 확장을 남용하면 코드 가독성이 저하될 있으므로 적절하게 사용하는 것이 좋습니다.

'개발' 카테고리의 다른 글

Swfit 제너릭 (Generics)  (0) 2024.07.05
Swift 프로토콜 (Protocols)  (1) 2024.07.05
Swift 중첩된 타입 (Nested Types)  (0) 2024.07.05
swift 타입 캐스팅 (Type Casting)  (0) 2024.07.05
swift 매크로 (Macros)  (0) 2024.07.05