[swift] 접근수준의 열거형 사용 방법

Swift에서는 접근 수준이 중요한 요소 중 하나입니다. 접근 수준은 코드 내에서 특정 부분에 대한 외부 접근이나 수정 권한을 제어하는 기능을 제공합니다.

이번 블로그에서는 Swift에서의 열거형을 사용하여 접근 수준을 제어하는 방법을 살펴보겠습니다.

1. 열거형의 기본 접근 수준

Swift에서 열거형을 선언할 때 기본적으로 internal 접근 수준을 가집니다. 이는 동일한 모듈 내에서는 열거형이 사용될 수 있지만, 다른 모듈에서는 사용할 수 없음을 의미합니다.

예시:

enum CompassPoint {
    case north
    case south
    case east
    case west
}

위의 CompassPoint 열거형은 기본적으로 internal 접근 수준을 가지고 있습니다.

2. public 열거형

만약 특정 열거형을 모듈 외부에서도 사용할 수 있게 하려면 public 접근 수준을 명시적으로 선언해야 합니다.

예시:

public enum Planet {
    case mercury
    case venus
    case earth
    case mars
}

3. 접근 수준 지정자 활용

Swift의 접근 수준 지정자를 이용하여 열거형의 각 요소들에 개별적인 접근 수준을 지정할 수도 있습니다.

예시:

public enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
    case pdf417(String)
    
    internal var description: String {
        switch self {
        case .upc(let numberSystem, let manufacturer, let product, let check):
            return "UPC: \(numberSystem), \(manufacturer), \(product), \(check)."
        case .qrCode(let productCode):
            return "QR code: \(productCode)."
        case .pdf417(let productCode):
            return "PDF417: \(productCode)."
        }
    }
}

위의 예시에서 description 속성은 internal 접근 수준을 가지고 있으므로, 해당 모듈 내부에서만 접근 가능합니다.

4. 종합 예제

아래의 종합 예제는 모든 접근 수준 지정자를 활용한 것입니다.

public enum Trade {
    public enum Action {
        case buy
        case sell
    }
    
    internal enum Status {
        case pending
        case completed
    }
}

위의 예제는 Trade 열거형을 public으로 선언하고, 그 내부에 또 다른 publicinternal의 열거형을 갖고 있는 예시입니다.

결론

Swift에서 접근 수준은 코드의 보안과 모듈 간 상호작용을 제어하기 위해 사용됩니다. 열거형을 선언할 때 적절한 접근 수준을 지정하여 모듈화된 코드를 보다 안정적으로 관리할 수 있습니다.

더 자세한 내용은 Swift Language Guide를 참고하시기 바랍니다.