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

Day03: enum

by GeekCode 2021. 11. 29.
반응형

 

enum

1. enum 선언하기

2. 값을 가질 수 있다.

3. 파라미터를 가질 수 있다.

4. enum안에 함수를 만들어 사용할 수 있다.

 

import UIKit
// #1
// 학교 - 초, 중, 고
enum School {
//    case elementary
//    case middle
//    case high
    case elementary, middle, high
}

let yourSchool = School.high
print("yourSchool : \(yourSchool)")
//print("yourSchool:", yourSchool)
//-> yourSchool: high

//#2 enum은 값을 가질 수 있다.
enum Grade: Int {
    case first = 1
    case second = 2
}

//let yourGrade = Grade.second
//print("yourGrade : \(yourGrade)")
// -> yourGrade : second

//let yourGrade = Grade.second
//print("yourGrade : \(yourGrade.rawValue)")
// -> yourGrade : 2

let yourGrade = Grade.second.rawValue
print("yourGrade : \(yourGrade)")
// -> yourGrade : 2


//#3 case에 파라미터를 넣어서 가져올 수 있다.
enum SchoolDetail {
    case elementary(name: String)
    case middle(name: String)
    case high(name: String)
    
    
    //나 자신의 케이스의 값을 가져올 수 있다.
    // 만약에 나 자신이 @@이라면? @@ 하겠다.
    func getName() -> String {
        switch self {
        case.elementary(let name):
            return name
        case let .middle(name):
            return name
        case .high(let name):
            return name
        }
    }
}

let yourMiddleSchoolName = SchoolDetail.middle(name: "기꼬중학교")
print("yourMiddleSchoolName: \(yourMiddleSchoolName)")
//-> yourMiddleSchoolName: middle(name: "기꼬중학교")

// 이름을 그냥 가져올 수 없을까? -> enum 안에 있는 함수를 가져올 수 있다.
let yourHighSchoolName = SchoolDetail.high(name: "기꼬고등학교")
print("yourHighSchoolName: \(yourHighSchoolName.getName())")
// -> yourHighSchoolName: 기꼬고등학교
반응형

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

Day07 property_observer  (0) 2021.12.02
Day06 class_struct  (0) 2021.11.30
Day05 Unwrap_Optional  (0) 2021.11.29
Day04 For_Loops  (0) 2021.11.29
Day02 : For-each(자료 보강 필요)  (0) 2021.11.28
Day01 : Conditional Statements_If  (0) 2021.11.26
생성자 이해하기, 2-phase Initialization, Convenience Initializer  (0) 2021.10.20
클래스상속은 언제 하면 좋을까?  (0) 2021.10.19