코딩하는 제리

[Swift]열거형(enum)/rawValue 본문

iOS/SwiftUI

[Swift]열거형(enum)/rawValue

JerryCho 2022. 1. 3. 14:25

// 열거형
// - 유사한 종류의 여러 값을 한 곳에 모아서 정의한 것.
// - 요일, 월, 계절 등
// - 카멜 케이스로 정의
// - 각 case는 한 줄에 개별로도, 한 줄에 여러개도 정의 가능.

enum Weekday {
	case mon
    case tue
    case wed
    case thu, fri, sat, sun
}

var day: Weekday = Weekday.mon
day = .tue // 타입이 명확하다면 .케이스로 표현해도 됨

// 모든 enum 케이스를 포함한다면 default는 없어도 됨
// enum을 이용한 switch-case
switch day {
	case .mon, .tue, .wed, .thu:
    	print("평일")
	case Weekday.fri:
    	print("불금")
	case .sat, .sun:
    	print("주말")
}

// rawValue(원시값)
// - rawValue는 case 별로 각가 다른 값을 가져야 한다.
// - 자동으로 1이 증가된 값이 할당된다.
// - rawValue를 반드시 지닐 필요가 없다면 안해도된다.
enum Fruit: Int {
	caes apple = 0
    case grape = 1
    case peach		// 자동으로 1 증가해서 2
    case mango = 0	// 에러
}

// 열거형의 원시값 타입이 String 일 때
// 원시값이 없다면 case의 이름을 원시값으로 사용한다.
enum School: String {
	case elementary = "초등"
    case middle = "중등"
    case high = "고등"
    case university
}

print("School.middle.rawValue == \(School.middle.rawValue)")
// School.middle.rawValue == 중등
print("School.univerisity.rawValue == \(School.univerisity.rawValue)")
// School.univerisity.rawValue == univerisity

// 원시값을 통한 변수 초기화
let apple: Fruit = Fruit(rawValue: 0)

if let orange: Fruit = Fruit(rawValue: 5) {
	print(orange)
} else {
	print("nil")
}

 

연관 값을 갖는 enum

enum Date {
	case intDate(Int, Int, Int)
	case stringDate(String)
}

var todayDate = Date.intDate(2022, 1, 12)
todayDate = Date.stringDate("2022년 1월 12일")

switch todayDate {
	case .intDate(let year, let month, let day):
    	print("\(year)년 \(month)월 \(day)일")
	case .stringDate(let date):
    	print(date)
}

 

 

'iOS > SwiftUI' 카테고리의 다른 글

[Swift] swift 클로저 - @autoclosure, @escaping  (0) 2022.01.04
[Swift] swift 클로저  (0) 2022.01.03
[Swift] swift 구조체/클래스  (0) 2022.01.03
[Swift] swift 조건문/반복문  (0) 2022.01.03
[Swift] swift 함수  (0) 2022.01.03
Comments