반응형
익스텐션(Extension)
- 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능
- 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다.
익스텐션이 타입에 추가할 수 있는 기능
- 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티
- 타입 메서드 / 인스턴스 메서드
- 이니셜라이저
- 서브스크립트
- 중첩 타입
- 특정 프로토콜을 준수할 수 있도록 기능 추가
상속과 익스텐션의 차이
분류 | 상속 | 익스텐션 |
확장 | 수직 확장 | 수평 확장 |
사용 | 클래스 타입 | 클래스, 구조체, 프로토콜, 제네릭 등 모든 타임 |
재정의 | 가능 | 불가능 |
사용법
extension 확장할 타입 이름 {
/* 기능 구현 */
}
[ 사용 예 ]
extension Int{ // 제너릭에 추가로 저장 파라미터와 메소드를 만들어 준다. (수평적)
var isEven : Bool {
return self % 2 == 0;
}
var isOdd : Bool {
return self % 2 == 1;
}
func multiply(by n:Int) -> Int {
return self * n;
}
}
print(1.isEven) // false;
print(2.isEven) // true;
var number : Int = 3;
print(number.isEven) // false;
print(number.isOdd) // true;
print(number.multiply(n:3)); // 9
이런식으로 추가가 가능하다.
익스텐션은 정말 신세계다... 이런식으로 코딩이 가능하다면 충분히 강력한 코딩이 가능하다.
아직은 익숙하지 않지만 실제로 코딩을 하기 시작하면 엄청 사용할 것 같다.
반응형
'Develop > iOS' 카테고리의 다른 글
iOS 음악 재생 앱 만들기 Part#1 - 앱 개발 (0) | 2019.05.14 |
---|---|
Swift 오류 처리 ( Error ) (0) | 2019.05.13 |
Swift 프로토콜 (Protocol) (0) | 2019.05.10 |
Swift assert 와 guard (0) | 2019.05.10 |
Swift nil병합 연산자 (0) | 2019.05.10 |