본문 바로가기
IOS App Programming/Swift

[Swift] 열거형 기본 - 열거형이란?, 원시값

by B_Tori 2023. 3. 15.

열거형이란?

연관 항목들을 묶어서 표현할 수 있는 타입으로 정의된 값 외에 추가/수정이 불가하다. 즉 정해진 값만 속할 수 있다.

열거형을 사용할 때

  • 제한된 선택지를 주고 싶을 때
  • 정해진 값 외에는 입력받고 싶지 않을 때
  • 예상된 입력 값이 한정되어 있을 때

기존 언어 열거형과 swift열거형의 차이

기존 언어 열거형

각 항목의 값이 정수 타입으로 기본 지정된다. 즉 정수 타입 값의 별칭으로 사용되었다.

 

swift 열거형

각 항목이 그 자체로 고유의 값을 가진다. 

예를 들어 다음과 같은 열거형이 존재한다고 하면 각 항목이 암시적으로 0,1,2,3.. 의 정수 값을 가지는 기존 언어와 다르게 각 항목 그대로 mon, tue,... 온전한 값을 가진다.

enum Week{
    case mon
    case tue
    case wed
    case thu, fri, sat, sun
}

+ 기존 언어처럼 원시값(raw value)형태로 실제 값을 가지게 할 수 있다.

 

열거형 사용법

기본 사용법

enum Week{
    case mon
    case tue
    case wed
    case thu, fri, sat, sun
}

enum 이름 { 구현부 } 와 같은 형식으로 선언할 수 있으며

케이스는 mon, tue, wed처럼 하나하나 작성해도 되고 thu, fri, sat, sun처럼 한 줄에 다 작성해도 된다.

 

swtich문과의 사용

스위치 문과 사용했을 때 스위치 문 케이스에 열거형의 모든 케이스를 작성해 주었다면 default 문을 쓰지 않아도 된다.

하지만 모든 케이스를 작성하지 않았다면 케이스를 추가하라는 오류가 발생하므로 default문 혹은 빼먹은 케이스를 작성해 주면 오류가 사라진다.

 

원시값(raw value) 사용

원시값은 열거형 이름 옆에 :을 붙이고 원시값 타입을 적어준 뒤 케이스 별 값을 지정해주면된다.

원시값을 모든 케이스에 지정해 줄 필요는 없다. 원시값을 지정하지 않은 케이스는 위처럼 문자열 형식의 원시값을 가진다면 항목 이름을 그대로 원시 값을 갖게 된다.

만약 원시값이 정수 타입이라면 첫 항목을 기준으로 0부터 1씩 늘어난 값을 가지게 된다.

 

댓글