익스텐션 (Extensions)
- 익스텐션을 이용해 클래스, 구조체, 열거형 혹은 프로토콜 타입에 기능을 추가 가능
- 익스텐션은 타입에 새로운 기능을 추가할 수 있지만, 오버라이드는 할 수 없음
- 계산된 인스턴스 속성 및 계산 유형 속성 추가
- 인스턴스 메서드 및 타입 메서드 정의
- 새 이니셜라이저 제공
- Subscript 정의
- 새 중첩 타입 정의 및 사용
- 기존 타입을 프로토콜에 맞게 설정
extension Int {
var add: Int { return self + 100 }
var sub: Int { return self - 10 }
var mul: Int { return self * 10 }
var div: Int { return self / 5 }
}
let addition = 3.add
print("Addition is \(addition)") // Addition is 103
let subtraction = 120.sub
print("Subtraction is \(subtraction)") // Subtraction is 110
let multiplication = 39.mul
print("Multiplication is \(multiplication)") // Multiplication is 390
let division = 55.div
print("Division is \(division)") // Division is 11
let mix = 30.add + 34.sub
print("Mixed Type is \(mix)") // Mixed Type is 154
프로토콜 익스텐션
- 이미 존재하는 타입에 새 프로토콜을 따르게 하기 위해서 확장(extension)을 사용 가능
- 기본 메서드 구현을 위해 프로토콜 익스텐션을 사용할 수 있음
- 익스텐션을 사용해 클래스를 나누게 되면 가독성이 높아짐
//기존 코드
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
}
//익스텐션 사용
class ViewController: UIViewController{}
extension ViewController: UIPickerViewDelegate{}
extension ViewController: UIPickerViewDataSource{}
반응형
'⌨️ Language > swift' 카테고리의 다른 글
[Swift] 고차함수 (0) | 2023.02.06 |
---|---|
[Swift] 클로저 (Closure) (0) | 2023.02.06 |
[Swift] 프로토콜 (Protocol) (0) | 2023.02.06 |
[Swift] assert와 guard (0) | 2023.02.06 |
[Swift] 타입 캐스팅 (0) | 2023.02.06 |
댓글