Enumeration, 열거형 타입에 대해 알아보기 전에
한 가지 예시를 먼저 살펴보도록 하겠습니다.
📌 스터디 그룹원의 닉네임과 취미를 Dictionary( String : [String]) 타입으로 정리합니다.
let myStudyGroupNickName : [String : [String]] = [
"Lime" : ["Running", "Drinking"],
"Jason" : ["Listening Music", "swimming" ],
"Kate" : ["play Game", "Basketball"],
"Happy" : ["Watch Movie", "namuWiki"]
]
📌 이후, Lime이란 닉네임을 가진 사람의 2번째 취미를 호출합니다.
- 별도의 상수(limeHobbie)에 Key 값으로 "Lime"과 취미 배열의 index 값을 할당합니다.
let limeHobbie : [String]? = myStudyGroupNickName["Lime"]![1] // Running
print("Lime의 2번째 취미는 \(limeHobbie)")
📌 하지만, 아래와 같은 예외 상황이 발생할 수 있습니다.
- Key값과 index값을 실수로 잘못 입력하게 된다면 오류가 발생합니다.
// key값 기입 오류
let limeHobbie : [String]? = myStudyGroupNickName["lime"]![1]
// index값 기입 오류
let limeHobbie : [String]? = myStudyGroupNickName["Lime"]![2]
위 예시와 같이 복잡하거나, 많은 정보가 담긴 코드를 작성할 시,
입력하는 과정에서 실수가 종종 발생하게 됩니다.
이와 같은 상황에 대처하기 위해,
① 사용자가 읽고, 작성하고, 해석하기 좋은 코드
② 실수에 대비하여 보다 직관적이고, 간결 명료한 코드
위 2가지 사항을 준수하여 코드를 작성하는 것을 권장합니다.
이후 연속해서 다룰 열거형, Enumeration이란 유형은 위 2가지 사항을 준수하는 자료형 타입입니다.
이번 포스팅에서는 Collection Type과의 비교를 통해
Enum이 어떻게 정의되고, 활용될 수 있는지 천천히 살펴보도록 하겠습니다.
Enumeration(Enum) 이란?
연관있는 값들을 열거함으로서 사용자로 하여금 해당 값에 대해 접근하기 쉽도록 도와주는 자료형
Enum, 열거형 타입은 사용자가 미리 정해놓은 (변수)값을 선택하여 호출할 수 있다는 특징이 있으며,
오타와 실수를 줄여 안정성을 갖고, 코드의 직관성과 가독성을 높일 수 있다는 장점이 있습니다.
Enum의 기본형태
- Enum은 'Type' 입니다!
- 이전 포스팅에서 다룬 Optioanl(옵셔널) 또한 사실 Enum 타입의 자료형입니다.
- 사용자가 미리 값을 정하기 위해, case 키워드 를 사용합니다.
- case별로 하나의 변수를 가지게 된다면, 쉼표(,) 를 사용하지 않고 나열합니다.
- '요일'이나 '색상'과 같이 변하지 않는 값을 가진 그룹에서 주로 활용됩니다.
// 1. Case 별 변수 선언
enum 이름 {
case 변수1
case 변수2
case 변수3
...
}
// 2. Case 별 변수 다중 선언
enum 이름 {
case (변수1, 변수2, 변수3)
case (변수A, 변수B, 변수C)
...
}
case 호출
- enum 이름 뒤에 점문법( . )을 활용하여 case를 호출할 수 있습니다.
- 이러한 호출방법은 사용자의 입력 실수를 줄일 수 있다는 장점으로 작용합니다.
// Color라는 이름의 enum을 선언합니다.
// 여기서 Color는, 하나의 자료형으로 활용됩니다.
enum Color {
case red
case green
case blue
}
다음 포스팅에 이어서,
enum 내 case의 초기값을 지정해주는 원시값(RawValue) 설정 방법과,
튜플(Tuple)을 활용한 다중 case값을 지정하는 연관값(Associated Value) 에 대해 살펴보겠습니다.
'iOS > Swift' 카테고리의 다른 글
[iOS/Swift] Function, 함수 찍먹하기 (2) | 2022.11.11 |
---|---|
[iOS/Swift] 알아두면 유용한, 열거형(Enumeration) ② (0) | 2022.11.07 |
[iOS/Swift] Type (X) Types (O) (0) | 2022.11.05 |
[iOS/Swift] 지정되지 않은 데이터의 나열, Tuple (0) | 2022.11.05 |
[iOS/Swift] Collection Type (Set, Dictionary) (0) | 2022.11.05 |
댓글