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 |