[swift] 18. Enumeration (열거형)
열거형이란 연관성이 있는 값을 모아 놓은 것을 말한다.
열거형 예제
enum CompassPoint { // 연관된 항목을 나열하기 위한 열거형
case north
case south
case east
case west
/*
위 코드를 다음과 같이 작성할 수 있다.
case north, south, east, west
*/
}
var direction = CompassPoint.east
print("direction: \(direction)")
direction = .west
switch direction {
case .north:
print("north")
case .south:
print("south")
case .east:
print("east")
case .west:
print("west")
}
출력 결과
direction: east
west
원시 값을 가지는 열거형
// 스위프트는 다양한 타입의 원시 값을 가질 수 있다.
enum CompassPoint: String { // CompassPoint의 각 항목이 String 원시 값을 가지게 한다.
case north = "북"
case south = "남"
case east = "동"
case west = "서"
}
var direction = CompassPoint.west
switch direction {
// rawValue라는 프로퍼티를 통해 원시 값을 가져올 수 있다.
case .north:
print(direction.rawValue)
case .south:
print(direction.rawValue)
case .east:
print(direction.rawValue)
case .west:
print(direction.rawValue)
}
실행 결과
서
원시 값을 가지고 열거형을 반환
enum CompassPoint: String { // CompassPoint의 각 항목이 String 원시 값을 가지게 한다.
case north = "북"
case south = "남"
case east = "동"
case west = "서"
}
let direction2 = CompassPoint(rawValue: "남")
print(direction2)
출력 결과
south
열거형의 연관 값을 반환
enum PhoneError {
case unknown
case batteryRow(String)
}
let error = PhoneError.batteryLow("배터리가 곧 방전됩니다.")
print(error)
print("\nswitch")
switch error {
case .batteryLow(let message):
print(message)
case .unknown:
print("알 수 없는 에러입니다.")
}
출력 결과
배터리가 곧 방전됩니다.
switch
배터리가 곧 방전됩니다.