Swift 열거형과 원시값
서로 연관된 상태를 enum으로 모델링하고 타입 추론과 원시값을 활용해 유효한 값만 안전하게 다루는 방법을 살펴봅니다.

열거형(enum)은 서로 관련된 선택지를 하나의 타입으로 묶는다. 문자열을 직접 전달하는 것보다 가능한 값을 코드에 명확히 드러내고 잘못된 입력을 컴파일 단계에서 막을 수 있다.
연관된 값을 하나의 타입으로 묶기
enum DevelopmentRole {
case frontend
case backend
case app
}
func introduce(role: DevelopmentRole) {
print("My role is \(role)")
}
introduce(role: .app)
호출부에서 타입을 이미 알 수 있으므로 DevelopmentRole.app 대신 .app처럼 타입 이름을 생략할 수 있다.
원시값 연결하기
enum DevelopmentRole: String {
case frontend = "프론트엔드"
case backend = "백엔드"
case app = "앱"
}
print(DevelopmentRole.app.rawValue) // 앱
let role = DevelopmentRole(rawValue: "앱") // DevelopmentRole?
원시값으로 생성한 결과는 대응하는 case가 없을 수 있어 옵셔널이다. 열거형은 단순한 상수 모음이 아니라 도메인의 유효한 상태와 규칙을 표현하는 타입이다.