열거형은 관련된 값으로 이루어진 그룹을 공통의 형으로(type) 선언해 형 안전성(type-safety)을 보장하는 방법으로 코드를 다룰 수 있게 해준다.
enum
키워드를 사용하여 선언
enum CompassPoint {
case north
case south
case east
case west
}
var direction = CompassPoint.east
direction = .west // west
// Switch 구문과 함께 다양하게 활용할 수 있다.
switch direction {
case .north:
print("north")
case .south:
print("south")
case .east:
print("east")
case .west:
print("west")
}
// 원시형 값도 넣을 수 있다.
enum CompassPoint2 : String {
case north = "북"
case south = "남"
case east = "동"
case west = "서"
}
var direction2 = CompassPoint2.north
direction2 = .west
switch direction2 {
case .north:
print(direction2.rawValue)
case .south:
print(direction2.rawValue)
case .east:
print(direction2.rawValue)
case .west:
print(direction2.rawValue)
} // 서
// 원시값으로 열거형을 반환하게 할 수 있다.
let direction3 = CompassPoint2(rawValue: "남") // south
// 열거형은 연관값도 가질 수 있다. (각 항목 옆에 소괄호로 표현)
enum PhoneError {
case unknown
case batteryLow(String) // 연관값의 타입을 소괄호에 표현
}
let error = PhoneError.batteryLow("배터리가 곧 방전됩니다.")
// 연관값의 추출 (Switch)
switch error {
case .batteryLow(let message):
print(message)
case .unknown:
print("알 수 없는 에러입니다.")
} // "배터리가 곧 방전됩니다.