본문 바로가기
모바일앱/Swift

Enumeration (열거형)

by GeekCode 2021. 12. 8.
반응형

 

// Enumeration (열거형)

 

📌 기본 열거형

// 연관된 항목들을 묶어서 표현할 수 있는 타입

enum School {

    case primary //유치원

    case elementary //초등학교

    case middle //중학교

    case high //고등학교

    case college //대학교

}

 

📌 한 줄로 열거형 선언하기

enum Food {

    case milk, kimchi, chicken, pizza

}

 

📌 열거형 변수의 생성 및 값 변경

var highestEducationLevel: School = School.high

//var highestEducationLevel: School = .high

print(highestEducationLevel)

// -> high

// 같은 타입인 School 내부의 항목으로만 highestEducationLevel의 값을 변경가능

highestEducationLevel = .college

print(highestEducationLevel)

// -> college

 

📌 Raw Value (원시값)

// 특정 타입으로 지정된 값을 가질 수 있다.

enum Fruit: String {

    case apple = "사과"

    case melon = "메론"

    case strawberry = "딸기"

    case pear = "배"

}

 

let myFavoriteFruit: Fruit = Fruit.strawberry

print("제가 가장 좋아하는 과일은 \(Fruit.strawberry.rawValue)입니다.")

///제가 가장 좋아하는 과일은 딸기입니다.

 

enum WeekDays: Character {

    case mon = "월", tue = "화", wed = "수", thu = "목", fri = "금", sat = "토", sun = "일"

}

 

let today: WeekDays = WeekDays.fri

print("오늘은 \(today.rawValue)요일 입니다.")

/// 오늘은 금요일 입니다.

 

📌 연관값

enum PastaTaste {

    case cream, tomato

}

 

enum PizzaDough {

    case cheeseCrust, thin, original

}

 

enum PizzaTopping {

    case pepperoni, cheese, bacon

}

 

enum MainDish {

    case pasta(taste: PastaTaste)

    case pizza(dough: PizzaDough, topping: PizzaTopping)

    case chicken(withSauce: Bool)

    case rice

}

 

var dinner: MainDish = MainDish.pasta(taste: PastaTaste.tomato)

dinner = MainDish.pizza(dough: PizzaDough.cheeseCrust, topping: PizzaTopping.bacon)

 

📌 항목순회

enum School: String, CaseIterable{

    case primary //유치원

    case elementary //초등학교

    case middle //중학교

    case high //고등학교

    case college //대학교

}

 

let allCases: [School] = School.allCases

print(allCases)

// 단순하게 print함수만 사용할 경우 메모리영역까지 출력이 됨

/// [__lldb_expr_11.School.primary, __lldb_expr_11.School.elementary, __lldb_expr_11.School.middle, __lldb_expr_11.School.high, __lldb_expr_11.School.college]

// 값들만 보기위해서는 for문을 이용해서 print해야함

for val in allCases {

      print(val)

  }

 

////순환열거형

////비교가능한 열거형

 

반응형

'모바일앱 > Swift' 카테고리의 다른 글

날짜 계산하기  (0) 2021.12.11
structures and Classes (+ enum)  (0) 2021.12.09
Loops (반복문)  (0) 2021.12.08
조건문(IF, Switch)  (0) 2021.12.08
Array  (0) 2021.12.08
Day11_extra_Tuple  (0) 2021.12.07
Day10 closure  (0) 2021.12.03
Day09 generic  (0) 2021.12.03