열거형은 하나의 타입으로 정의해서 캡슐화함으로써 안전하고 간결한 코드를 작성하는 목적으로 사용됩니다.
swift에서의 열거형은 자료형과 원시값을 설정할 수 있고, 연산 프로퍼티 및 메소드도 정의할 수 있습니다.
또한 초기화 메소드를 정의할 수 있고, 프로토콜로 인한 기능 상속도 가능합니다.
다만 위에서도 말했듯이 연산 프로퍼티만 정의할 수 있고, 저장 프로퍼티는 정의할 수 없습니다.
저장 공간은 데이터를 연동한 각각의 case에만 있습니다. 이 부분은 아래에서 알아볼 것입니다.
참고로 enum
도 value type
이기 때문에 전달할 때 값이 복사됩니다.
아래는 열거형의 기본 형식입니다.
enum CompassPoint {
case north
case south
case east
case west
}
쉼표로 구분해서 구현도 가능합니다.
enum Planet {
case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}
enum
을 구현하는 name은 CompassPoint
, Planet
과 같이 대문자로 시작해야하며, 복수형이 아닌 단수형으로 정의합니다.
아래는 enum
값을 할당하는 방식입니다.
두번째 라인에서는 변수의 타입을 CompassPoint
라고 정의했기 때문에 .east
라고만 해도 타입을 유추해서 사용이 가능합니다.
var directionToHead = CompassPoint.west
var directionToHead: CompassPoint = .east
enum
을 사용해서 값을 비교할 때는 일반적으로 switch-case
문을 사용합니다.
let somePlanet = Planet.earth
switch somePlanet {
case .earth:
print("Mostly harmless")
default:
print("Not a safe place for humans")
}
// Prints "Mostly harmless"