enum
swift는 C언어와 다르게 문자열, 정수형, 실수형 등 대부분의 타입을 지원한다.
- enum 규칙
- enum도 타입이므로 이름을 대문자로 작성한다.
- 각 case들은 소문자로 작성한다.
- 한 줄씩 작성해도 되고 쉼표로 구분하여 한 줄에 작성해도 상관없다.
□ enum 선언 예시
enum WeekDay{
case mon
case tue
case wed
case thu, fri, sat, sun
}
□ enum 사용 예시
var day: WeekDay = WeekDay.mon
print(day)
day = .fri
switch day{
case .mon, .tue, .wed, .thr:
print("평일")
case .fri, .sat, .sun:
print("주말")
}
enum을 호출할 때는 enum에 지정한 이름을 한 번 호출해 주어야 한다.
그 이후에는 '.'을 이용하여 접근 가능하다. (컴파일러가 똑똑해요ㅎ)
→ Switch-case를 사용하면 enum을 더욱더 효과적으로 사용할 수 있고 switch-case를 사용할 때 enum의 모든 case들을 다 쓰지 않는 경우 default값을 지정해야 한다.
다른 타입들을 적용하고 싶다면 다음과 같이 사용할 수 있다.
□ enum 다른 타입 사용 예시
enum Count: Double{
case one = 1.1
case two = 2.2
case three = 3.3
case four = 4.4
}
enum Str: String{
case one = "one"
case two = "two"
case three = "three"
case four = "four"
}
□ enum 사용 예시
print("One = \(Count.one.rawValue)") //one에 저장된 값 1.1 출력
print("One = \(Count.one)") // one 출력
let a :Count? = Count(rawValue: 1.1) //rawValue인 경우 객체가 생성되지 않고 nil값 반환
print("a = \(a)!")
// 옵셔널 바인딩 방법 | if-let
if let b = Count(rawValue: 2.2){
print("b = \(b)")
}
직접 지정 타입으로 사용할 때는 rawValue값이 없을 때도 있기 때문에 optional 타입을 생각해야 한다. 따라서 optional binding을 활용하여 optional을 해제해야 한다.
값이 지정되어 있지 않는 경우 출력할 때 case의 이름을 반환한다.
열거형 타입에 함수 넣기
열거형에 함수를 넣을 수 있는 것을 보고 놀랐다.
□ 예시
enum Month{
case mar, apr, may
case jun, jul, aug
func printMonth(){
switch self{
case .mar, .apr,. may:
print("봄")
case .jun, .jul, .aug:
print("여름")
}
}
}
Month.may.printMonth()
enum 사용하는 이유
- 보기 쉬운 깔끔한 코드
- 코드를 작성할 때 실수를 줄여준다.
- 코드 작성이 편리해 진다.
# 참고한 사이트
'iOS > 문법' 카테고리의 다른 글
Swift 문법과 친해지기 - Type Casting 와 Any, AnyObject (0) | 2023.01.04 |
---|---|
Swift 문법과 친해지기 - Subscript (0) | 2022.12.31 |
Swift 문법과 친해지기 - 고차함수 (map, filter, reduce) (0) | 2022.12.26 |
Swift 문법과 친해지기 - Set (0) | 2022.12.26 |
Swift 문법과 친해지기 - Dictionary (0) | 2022.12.26 |