학습
Swift 열거형(Enum) 기초
Swift 열거형(Enum) 기초 — 초급
열거형(Enum) 기초
1. 도입 (왜 배워야 하는가)
열거형(Enum)은 Swift 프로그래밍에서 매우 중요한 개념입니다. Enum을 사용하면 관련된 값을 하나의 그룹으로 묶어 관리할 수 있으며, 코드의 가독성과 유지보수성을 높이는 데 큰 도움이 됩니다. 실무에서는 상태, 옵션, 종류 등을 명확하게 정의할 수 있어 코드의 의도를 분명히 하는 데 유용합니다.
열거형을 모르면, 예를 들어 쇼핑몰의 제품 종류를 관리할 때 각 제품의 상태(재고 있음, 재고 없음 등)를 분명하게 표현하지 못해 코드가 복잡해지고 이해하기 어려워질 수 있습니다. 이는 버그를 발생시키거나 개발 속도를 늦추는 원인이 됩니다.
2. 핵심 개념 설명
열거형(Enum)은 관련된 여러 값을 하나의 타입으로 묶어주는 사용자 정의 데이터 타입입니다. 이를 통해 코드의 의미를 보다 명확하게 할 수 있습니다.
비유
열거형은 마치 '음식 메뉴'와 같습니다. 메뉴에는 여러 종류의 음식이 있지만, 각 음식은 같은 카테고리(예: 한식, 중식 등)에 속합니다. 이처럼 Enum은 특정 범위 내에서 서로 관련된 값들을 그룹화합니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| Enum | 관련된 값들을 하나의 타입으로 묶는 것 |
| Case | Enum 내에서 정의되는 각각의 값 |
| Raw Value | Enum 값에 부여할 수 있는 기본 데이터 |
3. 기본 코드 예제
아래는 기본적인 Enum 사용 예제입니다.
enum Fruit {
case apple
case banana
case orange
}
// Fruit 타입의 변수 생성
var myFruit: Fruit = .apple
// 변수의 값 출력
print(myFruit) // 출력: apple
실행 결과
apple
코드 한 줄씩 동작 설명
enum Fruit { ... }: Fruit라는 이름의 열거형을 정의합니다. apple, banana, orange라는 세 가지 케이스를 포함합니다.var myFruit: Fruit = .apple: Fruit 타입의 변수를 생성하고, 그 값을 apple로 초기화합니다.print(myFruit): myFruit 변수를 콘솔에 출력합니다.- 열거형은 관련된 값을 그룹화하여 코드의 가독성을 높인다.
- Enum은 여러 상황에서 유용하게 사용되며, 상태 관리에 적합하다.
- 케이스를 잘 정의하고, 초기화 시 유효한 값을 사용해야 한다.
4. 실전 활용 예제
예제 1: 쇼핑몰에서 장바구니 상태 관리
쇼핑몰에서 장바구니의 상태를 관리할 때 Enum을 활용할 수 있습니다.
enum CartStatus {
case empty
case filled
case checkedOut
}
var currentStatus: CartStatus = .empty
// 장바구니 상태 업데이트
currentStatus = .filled
예제 2: 교통수단 선택
교통수단을 선택할 때 Enum을 사용하여 각 교통수단의 상태를 관리할 수 있습니다.
enum Transportation {
case car(speed: Int)
case bike(speed: Int)
case bus
}
var myTransport: Transportation = .car(speed: 60)
// 속도 출력
switch myTransport {
case .car(let speed):
print("자동차 속도: \(speed) km/h")
case .bike(let speed):
print("자전거 속도: \(speed) km/h")
case .bus:
print("버스를 선택했습니다.")
}
5. 흔한 실수와 주의사항
실수 1: Enum에 Case를 추가하지 않고 사용하기
잘못된 코드:
var myFruit: Fruit = .grape // 정의되지 않은 케이스
올바른 코드:
var myFruit: Fruit = .apple // 정의된 케이스 사용
실수 2: Raw Value를 설정하지 않음
잘못된 코드:
enum Days {
case monday
case tuesday
}
let today: Days = .wednesday // 정의되지 않은 케이스
올바른 코드:
enum Days: String {
case monday = "월요일"
case tuesday = "화요일"
}
let today: Days = .monday // 정의된 케이스 사용
6. 정리
다음에 학습하면 좋은 주제는 "구조체(Struct)와 클래스(Class)"입니다. 이 두 개념은 Swift에서 데이터 모델링의 기초가 되므로 Enum과 함께 이해하면 좋습니다.