[iOS-Swift] enum 열거형

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