[swift] Swift 구조체에서 사용되는 Protocol에 대해 설명해주세요.

Swift에서 Protocol은 인터페이스 정의에 사용되는 강력한 도구입니다. Protocol을 이용하여 메서드, 속성, 기타 요구사항들을 정의할 수 있으며, 이를 구조체, 클래스, 열거형에서 채택(adopt)하여 구현할 수 있습니다.

Protocol 정의

다음은 Protocol을 사용하여 간단한 예시를 작성한 것입니다.

protocol Vehicle {
    var isRunning: Bool { get set }
    func start()
    func stop()
}

위 예시에서 Vehicle Protocol은 isRunning 속성과 start(), stop() 메서드를 요구합니다. Protocol을 정의할 때는 구현부가 포함되지 않으며, 이것을 Protocol 채택한 유형이 구현해야 합니다.

Protocol 채택

다음은 Protocol을 채택하여 구현하는 방법에 대한 예시입니다.

struct Car: Vehicle {
    var isRunning: Bool = false
    
    func start() {
        if !isRunning {
            isRunning = true
            print("Car started")
        }
    }
    
    func stop() {
        if isRunning {
            isRunning = false
            print("Car stopped")
        }
    }
}

위 예시에서 Car 구조체는 Vehicle Protocol을 채택하여 해당 Protocol에 정의된 요구사항을 모두 구현하였습니다.

장점

Protocol을 이용하여 유형 간 일관성 있는 인터페이스를 정의할 수 있습니다. 이를 통해 코드의 추상화와 모듈화를 촉진하고 재사용성을 높일 수 있습니다.

결론

Swift의 Protocol은 객체의 특정 종류에 대한 일관성 있는 동작을 정의하는 데 매우 유용한 도구입니다. Protocol을 이용하여 코드를 더 간결하고 확장 가능하게 구현할 수 있습니다.

참고 자료