What Extension?
extension은 기존의 클래스, 구조체, 열거형 등에 새로운 기능을 추가하거나 기존 기능을 수정할 수 있는 Swift의 기능임.
확장은 기존 코드를 변경하지 않고도 코드의 재사용성과 가독성을 높일 수 있으며, Swift 코드의 확장성을 높이는 데 도움이 됨.
extension을 사용하면 클래스, 구조체, 열거형에 새로운 메서드, 연산 프로퍼티, 초기화 메서드, 서브스크립트 등을 추가할 수 있습니다. 또한, 프로토콜을 채택한 타입에 프로토콜을 구현하는 Extension을 만들 수 있는데 예시를 들어보겠음.
Exemple
extension String {
var length: Int {
return self.count
}
func containsNumber() -> Bool {
return self.rangeOfCharacter(from: .decimalDigits) != nil
}
mutating func reverse() {
self = String(self.reversed())
}
}
var str = "Hello, world!"
print(str.length) // 출력 결과: 13
print(str.containsNumber()) // 출력 결과: false
str.reverse()
print(str) // 출력 결과: !dlrow ,olleH
위 코드는 String 타입에 3개의 확장을 적용한 것임.
첫 번째 확장은 length라는 연산 프로퍼티를 추가한 것이고, 문자열의 길이를 반환함.
두 번째 확장은 containsNumber라는 메서드를 추가하였으며, 문자열에 숫자가 포함되어 있는지 여부를 반환함.
세 번째 확장은 reverse라는 mutating 메서드를 추가하였으며, 문자열을 뒤집음.
이와 같이 extension을 사용하면 기존의 타입을 변경하지 않고도 새로운 기능을 추가 확장할 수 있어 유지보수성을 높일 수 있음.