연관된 항목들을 묶어서 표현할 수 있는 타입이다. 스위프트의 열거형은 enum이라는 키워드로 선언 할 수있다. 열거형은 정의해준 항목 값 외에는 추가/수정이 불가하다.그렇기 때문에 정해진 값만 열거형 값에 속할 수 있다. 열거형은 다음 같은 경우에 주로 사용된다.
- 제한된 선택지를 주고 싶을 때
- 정해진 값 외에는 입력받고 싶지 않을 때
- 예상된 입력 값이 한정되어 있을 때
Menu 라는 이름을 가진 열거형에 pasta,pizza,chicken,rice 라는 항목이 있다. 각 항목은 그 자체가 고유의 값이며, 항목이 여러가지일때 한 줄에 모두 표현해 줄 수도 있다.
열거형의 각 항목은 자체로도 하나의 값이지만 항목의 원시 값도 가질 수 있다. 즉, 특정 타입으로 지정된 값을 가질 수 있다는 뜻이다. 특정 타입의 값을 원시값으로 가지려면 열거형의 이름 오른쪽에 타입을 명시해 주어야 한다. 또 원시 값을 사용하고 싶을 때는 rawValue라는 프로퍼티를 통해 가져올 수 있다.
아래 코드에서는 "저는 오늘 밥을 먹었습니다." 가 출력된다.
스위프트의 열거형 각 항목이 연관 값을 가지게 되면, 기존 프로그래밍 언어의 공동체 형태를 띌 수도 있다. 열거형 내의 항목(case)이 자신과 연관된 값을 가질 수 있다. 연관 값은 각 항목 옆에 소괄호로 묶어 표현할 수 있다. 다른 항목이 연관 값을 가진다 해도 모든 항목이 연관 값을 가질 필요는 없다.
여러 열거형을 응용한 코드도 살펴보자