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
'IOS개발: SWIFT > 5. 고급 주제 탐구' 카테고리의 다른 글
Swift CustomError 프로토콜 (0) | 2024.09.13 |
---|---|
Swift 예외 처리:do-catch 문, throw, rethrows (0) | 2024.09.13 |
Swift 제네릭 제약 (0) | 2024.09.13 |
Swift 제네릭 함수, 제네릭 타입 (0) | 2024.09.13 |
Swift 열거형의 종류: 원시 값, 연관 값 (0) | 2024.09.13 |