[swift] 확장(extension)

Swift에서는 기존의 클래스, 구조체, 열거형 또는 프로토콜에 새로운 기능을 추가할 수 있도록 확장 기능을 제공합니다. 확장을 사용하면 기존 유형에 대한 추가적인 기능을 추가할 수 있으며, 기존 소스 코드에 접근할 수 없는 유형을 확장하여 프로토콜 준수를 추가할 수 있습니다.

기본 구문

확장의 기본 구문은 다음과 같습니다.

extension SomeType {
    // 새로운 기능 추가
}

위의 구문에서 SomeType은 기존의 클래스, 구조체, 열거형 또는 프로토콜을 나타내며, 중괄호 내부에는 해당 유형에 추가할 새로운 기능들을 정의합니다.

계산된 프로퍼티 추가

확장을 사용하여 기존 유형에 계산된 프로퍼티를 추가할 수 있습니다.

extension Double {
    var squared: Double {
        return self * self
    }
}

위의 예제에서는 Double 유형에 squared라는 새로운 계산된 프로퍼티를 추가하고 해당 값의 제곱을 반환하도록 정의되어 있습니다.

메서드 추가

기존 유형에 새로운 인스턴스 메서드나 타입 메서드를 추가할 수 있습니다.

extension Int {
    func repetitions(task: () -> Void) {
        for _ in 0..<self {
            task()
        }
    }
}

위의 예제에서는 Int 유형에 repetitions라는 새로운 인스턴스 메서드를 추가하고, 해당 메서드를 호출한 횟수만큼 특정 작업을 반복 실행하도록 정의되어 있습니다.

초기화 메서드 추가

확장을 사용하여 기존 유형에 새로운 초기화 메서드를 추가할 수도 있습니다.

extension String {
    init(repeating value: String, count: Int) {
        self = ""
        for _ in 0..<count {
            self += value
        }
    }
}

위의 예제에서는 String 유형에 repeating이라는 새로운 초기화 메서드를 추가하고, 해당 메서드를 사용하여 특정 문자열을 지정한 횟수만큼 반복하여 반환할 수 있도록 정의되어 있습니다.

참고 자료