열거형은 객체를 정의하는 시점에서 함께 정의되므로, 데이터를 삭제하거나 변경하는 것이 용이하지 않습니다. 만약 삭제하려면 직접 코드를 수정해야 합니다. 이러한 특성은 오타나 실수가 발생했을 때, 컴파일 오류로 바로 확인할 수 있어 런타임 오류보다 오류를 발견하고 수정하기가 더 쉽습니다.
enum CoffeeType {
case americano
case latte
case cappuccino
case mocha
}
enum Job {
case warrior
case mage
case archer
case healer
}
Swift의 열거형은 몇 가지 값을 가지는 타입을 정의하여 데이터를 그룹화하는데 사용됩니다. 이를 통해 코드를 더욱 안전하게 작성하고 유지 보수하기 쉽게 만들 수 있습니다.
또한, 열거형은 switch 문과 함께 사용하여 다양한 경우를 처리하기에도 용이합니다. 열거형의 각 case에는 고유한 값과 연관된 데이터를 가질 수 있으며, 이를 활용하여 다양한 상황에 대응할 수 있습니다.
func getPrice(for coffee: CoffeeType) -> Int {
switch coffee {
case .americano:
return 3000
case .latte:
return 3500
case .cappuccino:
return 3200
case .mocha:
return 3800
}
}
열거형 타입을 switch 구문에서 사용할 수 있습니다.
각 case에 다른 타입의 값을 연결하여 보관하는 기능을 말합니다. 즉, 각 case가 특정 값을 가지도록 할 수 있습니다.
enum CarStatus {
case stopped
case moving(speed: Double)
case parked(isHandbrakeOn: Bool)
}
// 연관값 사용하기
switch movingCar {
case .stopped:
print("자동차가 정지 중입니다.")
case .moving(let speed):
print("자동차가 주행 중이며, 주행 속도는 \(speed) km/h 입니다.")
case .parked(let isHandbrakeOn):
if isHandbrakeOn {
print("자동차가 주차 중이며, 손잡이 브레이크가 켜져 있습니다.")
} else {
print("자동차가 주차 중이며, 손잡이 브레이크가 꺼져 있습니다.")
}
}
switch 문을 사용하여 각 상태에 따른 정보를 출력하고 있습니다. 이를 통해 열거형의 각 case에 연관값을 활용하여 더 다양하고 유용한 정보를 표현할 수 있습니다.
문자열 형식의 멤버에 할당된 값을 읽을 때 사용됩니다.
대표적인 예시 코드를 HTTP 응답 코드입니다.
enum HTTPResponseCode: String {
case success = "200 OK"
case notFound = "404 Not Found"
case internalServerError = "500 Internal Server Error"
}
let responseCode = HTTPResponseCode.success
print("응답 코드: \(responseCode.rawValue)") // 출력: "응답 코드: 200 OK"
위의 예시에서 HTTPResponseCode는 HTTP 응답 코드를 나타내는 열거형으로, 각 응답 코드에 해당하는 문자열을 rawValue로 할당하였습니다. rawValue를 사용하여 문자열 형식의 멤버에 할당된 값을 읽을 수 있습니다.