728x90
반응형
야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다.
열거형
- 연관된 항목들을 묶어서 표현할 수 있는 타입
- 프로그래머가 정의해준 항목 값 외에는 추가/수정 불가
연관 값
- 스위프트의 열거형 각 항목이 연관 값을 가지게 되면 기존 프로그래밍 언어의 공용체 형태를 띌 수도 있다.
- 열거형 내의 항목(case)이 자신과 연관된 값을 가질 수 있다.
- 연관 값은 각 항목 옆에 소괄호로 묶어 표현할 수 있다.
// ex. 연관 값을 갖는 열거형
enum MainDish {
case pasta(taste: String)
case pizza(dough: String, topping: String)
case chiken(withSource: Bool)
case rice
}
var dinner: MainDish = MainDish.pasta(taste: "크림") // 크림 파스타
dinner = .pizza(dough: "치즈크러스트", topping: "불고기") // 불고기 치즈크러스트 피자
dinner = .chiken(withSource: true) // 양념 통닭
dinner = .rice // 밥
- 파스타의 맛, 피자 도우, 토핑 등을 특정 메뉴로 한정 지으려면 열거형으로 바꾼다.
CaseIterable: protocol
- 열거형에 포함된 모든 케이스를 알아할 때는 해당 열거형에
CaseIterable protocol
을 채택한다. - 그럼
allCases
라는 타입 프로퍼티가 모든 케이스의 컬렉션을 생성해준다 available
속성을 통해 특정 케이스에 따라 사용할 수 있거나 없는 경우를 설정할 수 있다. 이런 경우는allCases
프로퍼티를 직접 구현해야한다.
indirect
(순환 열거형)
- 열거형 항목의 연관 값이 열거형 자신의 값이고자 할 때 사용
- 특정 항목에만 한정하고 싶다면
case
앞에, 전체에 적용하고 싶다면enum
앞에 붙인다
Comparable: protocol
(비교 가능한 열거형)
- 연관 값만 갖거나 연관 값이 없는 열거형은 Comparable 프로토콜을 채택하면 각 케이스 비교 가능
- 앞에 위치한 케이스가 더 작은 값이 된다
반응형
'Programming > Swift' 카테고리의 다른 글
[Swift] 문법 다시보기 - 함수 (0) | 2021.10.11 |
---|---|
[Swift] 문법 다시보기 - Switch (0) | 2021.10.10 |
[Swift] Computed Properties (연산 프로퍼티) (0) | 2019.07.28 |
[Swift] Lazy Stored Properties (0) | 2019.07.28 |
[Swift] Enumeration (열거형) 살펴보기 (0) | 2019.07.10 |