본문 바로가기
2022_iOS 앱 개발자 워크숍/1, Swift 문법 복습

Swift : Enum고급 [ rawValue, associated value ]

by 황민우 2022. 1. 11.

rawValue

= 열거형에서 바로 사용할 수 있는 값으로 실제로 가지고 있는 값에 대한 접근이다.

 

예제 1

enum Color : Int {
    case red = 0
    case green		// 1
    case blue = 5
    case yellow		// 6
}
print(Color.red)
print(Color.green)
print(Color.blue)
print(Color.yellow)
print(Color.red.rawValue)
print(Color.green.rawValue)
print(Color.blue.rawValue)
print(Color.yellow.rawValue)

실행결과
// red
// green
// blue
// yellow
// 0
// 1
// 5
// 6

 

예제 2 : String 형의 열거형 rawValue

enum Name: String {
    case Hojin = "호진"
    case jiseop = "지섭"
    case changmo = "창모"
    case hyeonwoo	// 값이 지정되지 않으면 case 이름 할당
}
print(Name.Hojin)
print(Name.jiseop)
print(Name.changmo)
print(Name.hyeonwoo)
print(Name.Hojin.rawValue)
print(Name.jiseop.rawValue)
print(Name.changmo.rawValue)
print(Name.hyeonwoo.rawValue)

실행결과
// Hojin
// jiseop
// changmo
// hyeonwoo
// 호진
// 지섭
// 창모
// hyeonwoo

연관 값 ( Associated Value )을 갖는 Enum

 

case 1 

enum Date{
    case intDate(Int, Int, Int)	// (Int,Int,Int)형 연관값을 갖는 intDate
    case stringDate(String)	// String형 연관값을 갖는 stringDate
}
var todayDate = Date.intDate(2022,1,12)
switch todayDate{
    case .intDate(let year, let month, let day):
        print("\(year)년 \(month)월 \(day)일")
    case .stringDate(let date):
        print(date)
}

실행결과
// 2022년 1월 12일

 

case 2

enum Date{
    case intDate(Int, Int, Int)	// (Int,Int,Int)형 연관값을 갖는 intDate
    case stringDate(String)	// String형 연관값을 갖는 stringDate
}
var todayDate = Date.intDate(2022,1,11)
todayDate = Date.stringDate("2022년 1월 11일")
switch todayDate{
    case .intDate(let year, let month, let day):
        print("\(year)년 \(month)월 \(day)일")
    case .stringDate(let date):
        print(date)
}

실행결과
// 2022년 1월 11일

내용출처 

https://www.youtube.com/watch?v=kkfOV2LvzAA&list=PLJqaIeuL7nuEEROQDRcy4XxC9gU6SYYXb&index=37

'2022_iOS 앱 개발자 워크숍 > 1, Swift 문법 복습' 카테고리의 다른 글

Swift : Empty Array  (0) 2022.01.15
Swift : Array  (0) 2022.01.15
Swift : Enum [ 열거형 ]  (0) 2022.01.08
Swift : Protocol  (0) 2022.01.08
Swift : 접근 제어 [ Access modifier ]  (0) 2022.01.07

댓글