Swift문법 박살내기: enum

이창형·2022년 7월 20일
0

Swift문법 박살내기

목록 보기
2/7
post-thumbnail

안녕하세요 오늘은 enum을 박살 내봅시다 🥊

enum 기본 사용법

import Foundation

// 경우를 나눈다고 생각
enum School {
    // 초, 중, 고
    case elementary
    case middle
    case high
    
}

// School이라는 enum에 접근하여 case를 들고옴
let yourSchool = School.elementary
print("yourSchool: \(yourSchool)")

enum은 경우를 나누는 것이라고 쉽게 생각하시면 될 것 같습니다.
위 코드를 보면 'enum School'에서 elementary, middle, high라는 세 가지 경우로 나누어져 있는 것을 알 수 있죠? 그 후 yourSchool이라는 상수에 School이라는 enum에서 elementary를 들고 와 대입하는 모습입니다.

결과

값이 있는 enum 사용법

위에서 값이 없는 enum의 기본 사용법을 알려드렸습니다. 이번엔 값이 있는 enum 사용법을 알려드리겠습니다.

import Foundation

enum Grade: Int {
    case first = 1
    case second = 2
}

let yourGrade = Grade.second

// Grade의 enum second에 저장된 값에 접근하고 싶으면. rawValue를 붙이면 된다
print(yourGrade.rawValue)

.rawValue를 적으면 enum의 값에 접근할 수 있다.

결과

이번엔 Parameter(매개변수)를 가지는 enum에 대해 알아봅시다

enum SchoolDetail {
    // name이라는 parameter(매개 변수)를 갖는 경우
    case elementary(name: String)
    case middle(name: String)
    case high(name: String)
}

let yourMiddleSchoolName = SchoolDetail.middle(name: "창브로중학교")
print(yourMiddleSchoolName)

결과가 "창브로중학교"라고 나올 줄 알았는데,,

결과

옆에 원하지 않는 이상한 게 많이 붙었습니다 화가 나죠?🤬
그럼 어떻게 해야 name만 쏙 뽑아올 수 있을까요??

enum SchoolDetail {
    // name이라는 parameter(매개 변수)를 갖는 경우
    case elementary(name: String)
    case middle(name: String)
    case high(name: String)
    
    // SchoolDetail안에 있는 함수
    func getSchoolName() -> String {
        // 분기 처리
        // self = 나 자신(SchoolDetail)
        switch self {
            // elementary라면 name만 반환
            case.elementary(let name):
                return name
            // 위 case랑 같은 코드지만 이렇게도 쓸 수 있다.
            case let.middle(name):
                return name
            case.high(let name):
                return name
        }
    }
}

let yourMiddleSchoolName = SchoolDetail.middle(name: "창브로중학교")

// getSchoolName() 적용
print(yourMiddleSchoolName.getSchoolName())

이렇게 enum 안에 name만 쏙 뽑아 올수 있게 도와주는 함수를 생성해 주는 것입니다.
이 함수는 String을 반환하네요. 즉 String 값을 꼭 return 해줘야 합니다!!
위 코드의 주석에도 나와있듯이 switch에서 분기 처리를 해주고 분기마다 원하는 코드를 작성하면 됩니다.
마지막으로 출력을 할 때 저희가 만든 함수를 적용해 줍니다.

결과

저희가 원하는 대로 원하지 않는 이상한 것들은 다 사라지고 '창브로중학교'만 출력되는 것을 볼 수 있습니다 ^_^

오늘도 swift 문법 박살 내신다고 고생하셨습니다 🔥

profile
iOS Developer

0개의 댓글