새소식

인기 검색어

iOS/Swift

[Swift] 열거형(Enumeration) - Enum 1/3

  • -

 

 

오늘 공부 해볼것은 열거형입니다.

Enumeration 이라고 하는데 Swift에서 자주 쓰이는 문법입니다.

 

열거형이란 ?

 

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/enumerations

 

The Swift Programming Language에서 정의된 열거형입니다.

좀 더 쉽게 설명하자면 타입 자체를 한정된 케이스로 정의 할 수 있는 타입입니다.

열거형은 Swift에서 1급 객체로 취급됩니다.

 

 

열거형을 사용할 상황 ?

 

위의 정의만 읽어보면 언제 열거형을 써야할지 감이 잘 안잡힐 수도있습니다.

 

예를 들어 요일이라는 변수가 있다고 가정해본다면

요일 변수에는 올 수 있는 값은 "월,화,수,목,금,토,일" 이 7가지 중 한가지 일것입니다.

 

var 요일: String = "월, 화, 수, 목, 금, 토, 일" 중 한가지

 

현재 요일은 String 타입의 변수입니다.

값을 입력받을때 오타가 발생하거나 의도적으로 월화수목금토일 이외의 값이 온다면

저희가 원하는 상황이 아니겠죠.

 

이같이 한정된 케이스로 정의 할 수 있을 때 열거형을 사용하는 것이죠

(ex: 동서남북, 남여, 가위바위보 등)

요일 변수가 String타입이 아니라 월화수목금토일의 값만 받을 수 있게 열거형타입으로 바꾸는 것이죠.

 

enum Weekday {
    case 월요일
    case 화요일
    case 수요일
    case 목요일
    case 금요일
    case 토요일
    case 일요일
}

var 요일: Weekday = .월요일

 

이와 같이 요일을 Weekday타입으로 변경해주면 월화수목금토일 외의 값이 오는 경우를 차단할 수 있습니다.

 

정의

 

열거형의 각 case는 그 자체가 고유의 값입니다.

각 case는 한줄에 또는 여러줄로도 정의가 가능합니다.

 

// 여러줄로 정의
enum Weekday {
    case 월요일
    case 화요일
    case 수요일
    case 목요일
    case 금요일
    case 토요일
    case 일요일
}

// 한줄에 정의
enum Weekday {
    case 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일
}

// 섞어서도 가능하다
enum Weekday {
    case 월요일, 화요일, 수요일
    case 목요일
    case 금요일, 토요일
    case 일요일
}

 

사용법

 

열거형의 사용법은 열거형의이름.케이스 형태로 사용합니다.

하지만 타입이 명확하다면 .케이스 형태로도 사용가능합니다.

 

// 타입이 명확할 경우
var monday: Weekday = .월요일
print(monday) // 월요일

// 타입이 명확하지 않을 경우
var tuesday = Weekday.화요일
print(tuesday) // 화요일

 

열거형의 케이스는 그 자체로 고유한 값이라고 설명드렸죠 ??

 

그래서 출력해보면 case 그 자체가 나오게 됩니다.

 

하지만 case 말고 String이나 Int와 같은 case 고유의 값말고 다른 값을 얻고 싶다면요 ?

그럴 때 사용하는것이 원시값(Raw Value)입니다.

 

원시값에 대한것은 다음 포스팅에서 이어집니다.

 

 

 

https://junbok97.tistory.com/285

 

[Enum 2/3] 열거형의 원시값 (Raw Value)

원시값(Raw Value) 열거형은 원시값을 가질 수 있는데 열거형을 선언할때 원시값으로 사용할 타입을 채택해주고 각 case에 알맞은 원시값을 할당해주면 됩니다. case의 .rawValue를 통해 원시값을 사용

junbok97.tistory.com

https://junbok97.tistory.com/284

 

[Enum 3/3] 열거형의 연관값 (Associated Value)

연관값(Associated Value) 열거형의 원시값의 단점은 모든 case가 동일한 타입의 원시값을 가져야 하고 case 별로 미리 지정된 하나의 값만을 가질 수 있다 는 것입니다. 이게 왜 단점이라고 생각하시는

junbok97.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.