[Swift] 08. 열거형

·2023년 1월 31일
1

Swift 문법

목록 보기
7/8
post-thumbnail

열거형

열거형은 각각의 case가 고유의 값으로 취급이 된다.
enum은 대문자 카멜케이스로, 각 case는 소문자 카멜케이스로 정의한다.

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

열거형의 케이스를 나타내는 문법은 아래와 같다.

var day: Weekday = Weekday.mon	   // var day = Weekday.mon 으로 축약 가능
day = .tue  	// 축약형

열거형은 switch 구문과 자주 사용된다.

switch day {
case .mon, .tue, .wed, .thu:
    print("평일입니다")
case Weekday.fri:
    print("불금!!!")
case .sat, .sun:
    print("주말!!!")
}

모든 케이스를 적어준다면 default를 작성해 줄 필요가 없다.




원시값

C 언어처럼 정수값을 가지도록 만들고 싶다면 원시값(rawValue)을 쓰면 된다.

enum Fruit: Int {
    case apple = 0
    case grape = 1
    case peach		// 자동으로 2가 들어간다.
 // case mango = 0  ->  X. mango와 apple의 원시값이 같으므로 
 // 					mango 케이스의 원시값을 0으로 정의할 수 없음
 
}

rawValue를 꺼내서 쓸 때는 다음과 같이 해주면 된다.

print("Fruit.peach.rawValue == \(Fruit.peach.rawValue)")

정수 타입 뿐만 아니라 Hashable 프로토콜을 따르는 모든 타입(ex. String)이 원시값의 타입으로 지정될 수 있다.

enum School: String {
    case elementary = "초등"
    case middle = "중등"
    case high = "고등"
    case university
}

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

print("School.university.rawValue == \(School.university.rawValue)")
// School.middle.rawValue == university

원시값을 통한 초기화

그리고 원시값을 통해 case를 초기화할 수 있다.
rawValue가 없는 경우가 있으므로 아래와 같이 옵셔널 타입으로 반환한다.

let apple: Fruit? = Fruit(rawValue: 0)
//let apple: Fruit = Fruit(rawValue: 0) 이라고 하재무녀 안됨

메서드

스위프트의 열거형에 메서드를 추가할 수 있다.




출처

야곰의 스위프트 기초문법 강좌

0개의 댓글