swift extensionsLanguage/Swift2022. 8. 24. 19:23
Table of Contents
이미 존재하는 클래스나 구조체, 열거형 등의 객체에 새로운 기능을 추가하여 확장해주는 구문입니다.
extensions의 기능을 소개를 하자면,
- 새로운 연산 프로퍼티를 추가할 수 있습니다.
- 새로운 메소드를 정의할 수 있습니다.
- 새로운 초기화 구문을 추가할 수 있습니다.
- 기존 객체를 수정하지 않고 프로토콜을 구현할 수 있습니다.
extension <확장할 기존 객체명> {
// 추가할 기능에 대한 구현 코드를 작성
}
연산 프로퍼티
extension Double {
var km: Double { return self * 1_000.0 }
var m: Double { return self }
var cm: Double { return self / 100.0 }
var mm: Double { return self / 1_000.0 }
}
let marathonDistance = 42.km + 195.m
print("마라톤의 총 거리는 \(marathonDistance)m 입니다")
// 마라톤의 총 거리는 42195.0m 입니다
1000 == 1_000
_가 추가된 부분은 단순히 자릿수를 구분하기 위해서 쓰였습니다.
메소드
기존 객체에서 사용된 같은 메소드를 익스텐션에서 재정의하는 것은 안됩니다
인스턴스 메소드는 익스텐션에서 mutating 키워드를 사용하여 인스턴스 자신을 수정할 수 있도록 합니다.
extension Int {
mutating = func square() {
self = self * self
}
}
var value = 3
value.square() // 9
'Language > Swift' 카테고리의 다른 글
[Swift] 불투명한 유형을 some으로 반환 그리고 Scene (0) | 2022.09.07 |
---|---|
swift compile & package 사용법 (0) | 2022.08.25 |
swift optional chain (0) | 2022.08.24 |
swift class type casting, init (0) | 2022.08.24 |
swift property observer (0) | 2022.08.23 |
@jaewpark :: 코스모스, 봄보다는 늦을지언정 가을에 피어나다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!