IOS개발: SWIFT/5. 고급 주제 탐구

Swift 열거형과 switch 문

_Blue_Sky_ 2024. 9. 13. 15:29
728x90
728x90

Swift 열거형과 switch 문: 자세한 설명 및 예시

열거형(Enumeration, Enum)이란?

열거형은 특정한 값들만 가질 수 있는 타입을 정의하는 방법입니다. 즉, 미리 정의된 값들 중 하나만 선택하여 사용할 수 있도록 제한하는 것이죠. 열거형은 코드의 가독성을 높이고, 예상치 못한 값이 들어오는 것을 방지하여 안전한 프로그래밍을 가능하게 합니다.

예시:

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

위 코드는 나침반 방향을 나타내는 열거형 CompassPoint를 정의합니다. 이 열거형의 값은 north, south, east, west 중 하나만 가질 수 있습니다.

switch 문

switch 문은 특정 값에 따라 다른 코드 블록을 실행하는 제어문입니다. 열거형과 함께 사용하면 매우 강력하고 안전한 코드를 작성할 수 있습니다.

기본 구조:

switch 값 {
case 값1:
    // 값1일 때 실행할 코드
case 값2:
    // 값2일 때 실행할 코드
default:
    // 위의 모든 case에 해당하지 않을 때 실행할 코드
}
 

열거형과 함께 사용하는 예시:

let directionToGo = CompassPoint.south

switch directionToGo {
case .north:
    print("Go north!")
case .south:
    print("Go south!")
case .east:
    print("Go east!")
case .west:
    print("Go west!")
}
 

위 코드는 directionToGo 변수의 값에 따라 다른 문자열을 출력합니다.

열거형의 추가 기능

  • 원시 값 (Raw Value): 각 열거형 값에 정수, 문자열 등의 원시 값을 할당할 수 있습니다.
  • 연관 값 (Associated Value): 열거형 값과 함께 추가적인 데이터를 저장할 수 있습니다.
  • 계산된 속성 (Computed Property): 열거형 값을 기반으로 계산된 값을 제공할 수 있습니다.

예시: 연관 값을 사용한 열거

enum Barcode {
    case upc(Int, Int, Int)
    case qrCode(String)
}

var productBarcode = Barcode.upc(8, 85909, 51226)

switch productBarcode {
case .upc(let numberSystem, let manufacturer, let product):
    print("UPC: \(numberSystem), \(manufacturer), \(product)")
case .qrCode(let productCode):
    print("   QR code: \(productCode)")
}
 

위 코드는 UPC 바코드와 QR 코드를 나타내는 열거형을 정의하고, 각각의 바코드에 대한 정보를 연관 값으로 저장합니다.

열거형과 switch 문의 장점

  • 코드 가독성 향상: 복잡한 조건문을 간결하게 표현할 수 있습니다.
  • 타입 안전성: 허용되지 않는 값이 들어오는 것을 방지하여 오류를 줄일 수 있습니다.
  • 코드 재사용성: 한 번 정의한 열거형을 다양한 곳에서 재사용할 수 있습니다.
  • 패턴 매칭: 복잡한 데이터 구조를 효과적으로 처리할 수 있습니다.

결론

Swift의 열거형과 switch 문은 코드를 더욱 안전하고 명확하게 작성하는 데 큰 도움이 됩니다. 특히, 다양한 상태나 경우의 수를 표현해야 할 때 유용하게 활용할 수 있습니다.

요약:

  • 열거형은 특정한 값들만 가질 수 있는 타입을 정의합니다.
  • switch 문은 열거형 값에 따라 다른 코드 블록을 실행합니다.
  • 열거형과 switch 문을 함께 사용하면 코드의 가독성과 안전성을 높일 수 있습니다.
728x90
728x90