Enumberation
연관된 상수들을 하나의 이름으로 묶은 자료형을 Enumeration(열거형)이라고 합니다.
열거형 안에 있는 상수들은 Enumeration Case 또는 Case라고 합니다.
Enumeration의 가장 큰 특징은 경우의 수가 고정되어 있을 경우 사용합니다. (정렬방식, 날짜, 모니터 연결 방식, 성별 등)
enum Alignment {
case left
case right
}
enum 키워드로 선언합니다.
열거형은 구조체와 클래스처럼 독립적인 형식이기 때문에, UpperCamelCase로 이름을 짓습니다.
{ } 안에는 열거형에 저장할 case를 선언합니다.
보통 한 줄에 하나씩 선언하고, 여러 case를 한 번에 선언하고 싶을 땐 ,로 나열할수도 있습니다.
enum Alignment {
case left, right
}
case 역시 코드에서 의미가 변하지 않는 하나의 독립적인 값입니다.
열거형 case를 기준으로 코드를 분기할 때는 주로 switch 문을 사용합니다.
Raw Values
Enumeration Case는 그 자체로도 독립적인 값이지만, 내부에 또 다른 독립적인 값도 저장할수도 있습니다. 이것을 Raw Value(원시값)이라고 부릅니다. 다른 언어와 호환을 위해 사용되기도 합니다.
enum Alignment: Int {
case left
case right = 100
case center
}
Alignment.left.rawValue // 0
Alignment.right.rawValue // 100
Alignment.center.rawValue // 101
필수값은 아니기 때문에 선택적으로 사용하면 되고, 선언 이후에 원시값을 바꾸는 건 불가능합니다.
원시값을 직접 지정해줄수도 있고, Int나 String처럼 원시값의 형식만 지정하고 원시값을 직접 저장하지 않는다면, 형식에 따라 원시값이 자동으로 저장됩니다.
Int 선언된 순서대로 0부터 1씩 증가하는 값이 원시값으로 저장
String case이름과 동일한 문자열이 원시값으로 저장