오늘 공부 해볼것은 열거형입니다.
Enumeration 이라고 하는데 Swift에서 자주 쓰이는 문법입니다.
열거형이란 ?
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
'iOS > Swift' 카테고리의 다른 글
[Swift] 열거형의 연관값 (Associated Value) - Enum 3/3 (0) | 2023.06.09 |
---|---|
[Swift] 열거형의 원시값 (Raw Value) - Enum 2/3 (0) | 2023.06.09 |
[Swift] 진법 변환 (0) | 2022.11.20 |
[Swift] 유니코드 변환 (0) | 2022.11.03 |
[Swift] sort() 와 sorted()의 차이 (0) | 2022.08.17 |