열거형은 하나의 타입으로 정의해서 캡슐화함으로써 안전하고 간결한 코드를 작성하는 목적으로 사용됩니다.

swift에서의 열거형은 자료형과 원시값을 설정할 수 있고, 연산 프로퍼티 및 메소드도 정의할 수 있습니다.

또한 초기화 메소드를 정의할 수 있고, 프로토콜로 인한 기능 상속도 가능합니다.

다만 위에서도 말했듯이 연산 프로퍼티만 정의할 수 있고, 저장 프로퍼티는 정의할 수 없습니다.

저장 공간은 데이터를 연동한 각각의 case에만 있습니다. 이 부분은 아래에서 알아볼 것입니다.

참고로 enumvalue 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"