
TIL 10일 차 - Swift 문법 enum 열거형
enum은 쉽게 말해 "정해진 선택지들 중에 하나만 고르게 만드는 타입"이다.
신호등을 예를 들어 enum을 만들어보자
enum TrafficLight {
case red
case yellow
case green
}
// enum 타입의 light 변수 생성하고 red값 대입
// light에는 red,yellow,green중 하나만 들어갈 수 있다.
또한 enum안에 함수를 만들고 호출하고 사용할 수 있음
// Season enum을 선언하고 Season이 그룹화하여 갖고있는 값은 spring, summer, autumn, winter이다.
enum Season: String {
case spring
case summer
case autumn
case winter
func weather() -> String{
switch self {
case .spring:
return "따뜻해요"
case .summer:
return "더워요"
case .autumn:
return "시원해요"
case .winter:
return "추워요"
}
}
}
let season = Season.spring // enum의 이름 뒤에 .을 찍고 데이터에 접근 가능하고 상수에 저장
print(season.weather()) // 따뜻해요 출력
이런 enum이 왜 필요하냐! 많은 장점과 쓰임들이 있기 때문이다.
1. 오타가 불가능하다.
light = .reeeed
// error: 존재하지 않음
2. 타입 안정성을 보장하고 의미를 바로 파악할 수 있음
if light == .red {
print("보행 금지")
}
3. 해당하는 값들만 가능하다는 것을 컴파일러가 이미 알고 있음
4. switch랑 enum은 한 세트와 다름없음
switch light {
case .red:
print("정지")
case .yellow:
print("주의")
case .green:
print("출발")
}
// 모든 case를 다 써야하고 하나라도 빠지면 error
5. enum은 이름만 있는 게 아니라 무려 값도 들고 다닐 수 있다.
enum NetworkState {
case loading
case success(code: Int)
case failure(message: String)
}
let state = NetworkState.success(code: 200)
// 성공이지만 상태 코드가 200이다.
// 정의된 enum의 변수 꺼내서 쓰기
switch state {
case .loading:
print("로딩 중")
case .success(let code):
print("성공, 코드: \(code)")
case .failure(let message):
print("실패, 이유: /(message)")
}
++) enum을 사용하여 만들어진 인스턴스는 struct와 마찬가지로 Value Type(값 타입)이다.
'iOS > Swift ' 카테고리의 다른 글
| [iOS-Swift] 접근 제어자 (0) | 2026.01.08 |
|---|---|
| [iOS-Swift] 중첩타입 (0) | 2026.01.08 |
| [iOS-Swift] 프로토콜 (0) | 2026.01.08 |
| [iOS-Swift] 인스턴스 (0) | 2026.01.07 |
| [iOS-Swift] 고차함수 (0) | 2026.01.07 |