Swift의 enum
타입에 대해서 살펴보겠습니다.
enum
은 서로 관련된 값을 그룹으로 모아서 좀 더 쉽게 사용할 수 있도록 도와주는 타입입니다.
먼저 enum
의 형태에 대해서 간단히 살펴보겠습니다.
enum 열거형이름 { case 값1 case 값2 case 값3, 값4, 값5
}
먼저 enum
키워드를 입력한 다음, 열거형의 이름을 입력합니다. 이때 열거형의 이름은 대문자로 시작해야 하는데, enum
역시 타입의 한 종류이기 때문입니다.
다음으로 각 줄마다 enum
에 속하는 값들을 적어줍니다. 이때 한 줄에 하나씩 작성하셔도 좋고, 한 케이스에 여러 값을 작성하셔도 좋습니다.
예시로 Weather
이라는 enum
을 생성해보겠습니다. Weather
에는 sunny
, rainy
, cloudy
라는 케이스가 속해있습니다.
열거형은 다음과 같이 사용할 수 있습니다.
변수에 enum
을 타입으로 사용하면, 컴파일러는 변수에 담길 수 있는 값을 사전에(?) 알 수 있기 때문에 switch
문에서도 자주 사용됩니다.
enum
에 속한 케이스를 전부 사용하면, switch
문에서 기본 값을 설정해주지 않아도 된다는 특징이 있죠.
enum
에는 원시 값(raw value)를 줄 수도 있습니다. 이 때 원시 값은 정수를 포함해서 Hashable을 따르는 모든 타입을 원시 값으로 사용할 수 있습니다.
그럼 Int
와 String
을 사용해서 원시 값을 추가해봅시다.
또한 원시값 이외에도 연관된 값(associated value)을 함께 저장할 수 있습니다. 위의 Weather
을 예시로 들면, rainy
일 때 비가 얼마나 오는지 Int
타입 등으로 함께 저장할 수 있겠네요. 그럼 연관된 값을 저장해보겠습니다.
이처럼 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