[Swift] enums

Ujeon 🍵
4 min readJul 11, 2021

--

Swift의 enum 타입에 대해서 살펴보겠습니다.

enum 은 서로 관련된 값을 그룹으로 모아서 좀 더 쉽게 사용할 수 있도록 도와주는 타입입니다.

먼저 enum 의 형태에 대해서 간단히 살펴보겠습니다.

enum 열거형이름 {  case 값1  case 값2  case 값3, 값4, 값5
}

먼저 enum 키워드를 입력한 다음, 열거형의 이름을 입력합니다. 이때 열거형의 이름은 대문자로 시작해야 하는데, enum 역시 타입의 한 종류이기 때문입니다.

다음으로 각 줄마다 enum 에 속하는 값들을 적어줍니다. 이때 한 줄에 하나씩 작성하셔도 좋고, 한 케이스에 여러 값을 작성하셔도 좋습니다.

예시로 Weather 이라는 enum 을 생성해보겠습니다. Weather 에는 sunny , rainy , cloudy 라는 케이스가 속해있습니다.

Weather 열거형입니다.

열거형은 다음과 같이 사용할 수 있습니다.

출력 결과는 아래에

변수에 enum 을 타입으로 사용하면, 컴파일러는 변수에 담길 수 있는 값을 사전에(?) 알 수 있기 때문에 switch 문에서도 자주 사용됩니다.

enum 에 속한 케이스를 전부 사용하면, switch 문에서 기본 값을 설정해주지 않아도 된다는 특징이 있죠.

enum 에는 원시 값(raw value)를 줄 수도 있습니다. 이 때 원시 값은 정수를 포함해서 Hashable을 따르는 모든 타입을 원시 값으로 사용할 수 있습니다.

그럼 IntString 을 사용해서 원시 값을 추가해봅시다.

만약 정수 값을 첫번 째 케이스에 만 지정하면 남은 케이스는 하나씩 증가하게 됩니다.

또한 원시값 이외에도 연관된 값(associated value)을 함께 저장할 수 있습니다. 위의 Weather 을 예시로 들면, rainy 일 때 비가 얼마나 오는지 Int 타입 등으로 함께 저장할 수 있겠네요. 그럼 연관된 값을 저장해보겠습니다.

sunny는 uvIndex를, rainy는 amount와 chance를 추가적인 정보로 갖게 되었습니다.

이처럼 enum 의 각 케이스에 추가적인 정보를 제공할 수 있습니다.

하지만 원시값과 연관된 값을 함께 사용할 수는 없다는 점. 기억해주세요! 😎

함께 할 수 없어

마지막으로, Swift의 enum 에는 특이하게도 메서드를 추가할 수 있습니다. Weather 에 날씨를 출력하는 printWeather 메서드를 추가해보겠습니다.

이처럼 Swift의 enum 은 다양한 부가기능을 가지고 있습니다. 그렇기 때문에 다양한 활용이 가능할 것이라 생각합니다.

지금까지 enum 에 대해서 알아보았습니다.

참고 자료

야곰의 스위프트 기본 문법 강좌 : 열거형

100 Days Of Swift : Enumerations

100 Days Of Swift : Enum associated values

100 Days Of Swift : Enum raw values

stackoverflow : Enum with raw type cannot have cases with arguments

--

--

Ujeon 🍵

Hi there, this is Ujeon. I want to be a developer who passes on value through development :)