열겨형이란?
하나의 주제로 연관된 데이터들이 각 케이스로 구성된 자료형 객체
다음 예제는 학교라는 주제에서 초,중,고 나뉨
// 값이 없는 경우: 그냥 case 만 나눔
enum School {
case elementary, middle, high
}
let yourSchool = School.high
print("\(yourSchool)")
// 각 case 각 값을 가진 경우
//.rawValue 로 값에 접근하다
enum Grade : Int {
case first = 1
case second = 2
}
let yourGrade = Grade.second
print("\(yourGrade.rawValue)")
// case 에 데이터를 우리가 넣어줌
// name 이 인자값이 된다
enum SchoolDetail {
case elementary(name: String)
case middle(name: String)
case high(name: String)
// 각 케이스에서 이름만 뽑는 함수
func getName() -> String {
switch self {
case let .elementary(name):
return name
case let .middle(name):
return name
case let .high(name):
return name
}
}
}
let yourMiddleSchoolName = SchoolDetail.middle(name: "코딩중")
print("\(yourMiddleSchoolName)")
// 이러면 케이스 통채로 출력
// middle(name: "코딩중") >>출력값
let yourMiddleSchoolName2 = SchoolDetail.middle(name: "코딩중")
print("\(yourMiddleSchoolName.getName())")
// 이름 뽑은 함수 호출함
딕셔너리, 배열 , 집합은 정의가 아닌 할당이다
=> 수정이 쉽다, 할당값 자체를 타입으로 사용할 수 없다.
열겨형은 객체 정의 시점에 같이 정의됨
=> 정의될 경우 컴파일이 인지하고 에러를 사전에 잡을 수 있다.
사용하면 좋을때
1. 원치 않는 값이 잘못 입력되는 것을 막고 싶을때 (guard문으로도 할 수 있음)
2. 입력받을 값을 미리 특정할 수 있을 때
3. 제한된 값만을 선택하도록 할때
<활용>
정해지 위치에서만 소스타입을 가져오고 싶을때 열거형으로 정의하면 잘못가져오는 실수를 안할 수 있음
ex) 이미지를 가져올때 카메라, 앨범 이런식으로
'Swift' 카테고리의 다른 글
| Swift - class VS struct (0) | 2022.06.10 |
|---|---|
| Swift - Unwrap 옵셔널 변수 (0) | 2022.06.10 |
| Swift - 반복문 (0) | 2022.06.10 |
| Swift - if (0) | 2022.06.10 |
| Swift - guard (0) | 2022.06.02 |