당신이 이미 구매한 스마트폰을 사용하고 있습니다. 그런데 어느 날, 스마트폰 제조사에서 새로운 기능이 담긴 '스티커'를 제공한다고 합니다. 이 스티커를 스마트폰 뒷면에 붙이면, 스마트폰이 원래 가지고 있던 기능 이외에도 새로운 기능을 사용할 수 있게 되는 것입니다.
Swift의 확장은 이런 스티커와 비슷합니다. 기존의 객체나 타입에 새로운 기능을 "붙여넣기" 하는 것이죠. 원본 객체나 타입을 수정하지 않고도, 새로운 기능을 추가할 수 있습니다.
예제
이미 만들어진 '사각형' 클래스를 가지고 있습니다. 이 클래스는 너비와 높이를 가지고 있죠. 이제 이 사각형의 면적을 계산하는 기능을 추가하고 싶습니다.
하지만 원본 '사각형' 클래스를 변경하고 싶지 않다면, 확장을 사용하여 새로운 기능을 추가할 수 있습니다.
class Rectangle {
var width: Int
var height: Int
init(width: Int, height: Int) {
self.width = width
self.height = height
}
}
// Rectangle에 면적을 계산하는 기능을 추가하는 확장
extension Rectangle {
func area() -> Int {
return width * height
}
}
let myRectangle = Rectangle(width: 10, height: 5)
print(myRectangle.area()) // 50이 출력됩니다.
이렇게, 확장을 사용하면 기존의 '사각형' 클래스를 수정하지 않고도 면적을 계산하는 새로운 기능을 추가할 수 있습니다.