[Swift] Enum(열거형)
2022. 5. 14. 17:27
참조 : Swift 스위프트 프로그래밍 3판 Swift 5, 저자 야곰 (한빛미디어) ,
The Swift Programming Language Swift 5.6 Edition (iBooks)
(https://books.apple.com/kr/book/the-swift-programming-language-swift-5-6/id881256329)
열거형
- 연관된 항목들을 묶어서 표현할 수 있는 타입
- 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가
- 열거형 각 항목이 원시 값(Raw Value) 형태로 가질 수 있음
- 원시 값(rawValue) : (정수, 실수, 문자 타입 등의) 실제 값을 가지는 것
- 열거형을 사용하는 경우
- 제한된 선택지를 주고 싶을 때
- 정해진 값 외에는 입력받고 싶지 않을 때
- 예상된 입력 값이 한정 되어 있을 때
- switch 구문과 활용
기본 열거형(Enum)
- 각 항목은 그 자체가 고유의 값
- 열거형 내의 항목(case)이 자신과 연관된 값을 가질 수 있음
//School 열거형 선언
enum School{
case primary = "유치원"
case elementary = "초등학교"
case middle = "중학교"
case high = "고등학교"
case college = "대학"
case university = "대학교"
case graduate = "졸업"
}
//열거형 변수의 생성 및 값 변경
var highestEducationLevel: School = School.university
var highestEducationLevel: School = .university // 두 문장은 같은 표현
highestEducationLevel = .graduate // 값을 변경해줄 수 있음
- 항목도 원시값을 가질 수 있는데, 항목 옆에 타입을 명시하고 rawValue 프로퍼티를 통해 가져올 수 있음
let highestEducationLevel: School = School.university
print("저의 최종학력은 \(highestEducationLevel.rawValue) 졸업입니다.")
// 저의 최종학력은 대학교 졸업입니다.
enum WeekDays: Character{
case mon = "월", case tue = "화", case wed = "수", case thu = "목", case fri = "금",
case sat = "토", case sun = "일"
}
let today: Weekdays = WeekDays.fri
print("오늘은 \(today.rawValue)요일 입니다.") // 오늘은 금요일입니다.
- 연관 값은 각 항목 옆에 소괄호(())로 묶어서 표현
- 열거형에 포함된 모든 케이스를 알아야 할 때 CaseIterable 프로토콜을 사용하여 모든 케이스의 컬렉션을 생성해줌
- @available 을 사용하여 플랫폼별로 사용 조건을 추가할 수 있음
순환 열거형(indirect)
- 열거형 항목의 연관 값이 열거형 자신의 값이고자 할 때 사용
- enum 키워드 앞에 indirect 키워드를 붙여 사용
비교 가능한 열거형(Comparable)
- 각 케이스를 비교 가능
728x90
'iOS > Swift' 카테고리의 다른 글
[Swift] 타입캐스팅 (0) | 2022.07.03 |
---|---|
[Swift] 옵셔널 체이닝 (0) | 2022.07.01 |
[Swift] Dictionary 와 Set (0) | 2022.05.14 |
[Swift] 데이터 타입 (0) | 2022.05.14 |
[Swift] Swift 기초 (0) | 2022.05.12 |