[swift] 4. enum 케이스 나누기

몽이 누나·2022년 4월 4일
0

swift 기초 문법

목록 보기
4/17
post-thumbnail

📖 enum이란

📌 enum (열거형)

같은 주제로 연관된 데이터들을 멤버로 구성하여 나타내는 자료형

💬 공통된 주제에 대해, 정해놓은 입력값 만 선택해 받고 싶을 때 사용함


📖 enum 정의하기

📌 값이 없는 경우

  • 두 가지 표현 방법이 있다.

enum 명칭 { case n1, n2, n3 ... }

enum 명칭 { case n1, case n2, case n3 ... }

ex) 학교 - 초, 중, 고

enum School {

    case elementary
    case middle
    case high
 }
  • 실제 사용 : .(점문법)
let yourSchool = School.high
print("yourSchool: \(yourSchool)")

⭐️ 참고 : 변경되는 값(변수)은 var ↔️ 변경되지 않는 값(상수)은 let


📌 값이 있는 경우

  • case에 원시값을 지정(Raw value)하고 싶을 때, 총 3가지 자료형 활용 가능함
number typecharacter typestring type

첫 번째 방법

enum 명칭 : 자료형 타입 { case n1 = ... }

ex)

enum Grade : Int {
    case first = 1
    case second = 2
}
  • 실제 사용
let yourGrade = Grade.second
print("yourGrade : \(yourGrade)")

>>> yourGrade : second
  • case의 값만 데리고 오고 싶은 경우 : .rawValue
print("yourGrade : \(yourGrade.rawValue)")

>>> yourGrade : 2

두 번째 방법

enum 명칭 { case n1( 입력할 값은... : 자료형 ) ... }

ex)

enum SchoolDetail1 {
    case elementary(name: String) // 데이터 지정
    case middle(name: String)
    case high(name: String)
}
  • 실제 사용
let yourMiddleSchoolName = SchoolDetail1.middle(name: "몽이중학교")
print("yourMiddleSchoolName: \(yourMiddleSchoolName)")

>>> yourMiddleSchoolName: middle(name: "몽이중학교")
  • case의 값만 데리고 오고 싶은 경우 : 메서드 만들기

ex)

enum SchoolDetail {
    case elementary(name: String)
    case middle(name: String)
    case high(name: String)
    
    func getName() -> String { // 메서드 (함수)
        switch self {
        case .elementary(let name): // 1. 이렇게 쓸 수도
            return name 
        case let .middle(name): // 2. 이렇게 쓸 수도 있다
            return name 
        case .high(let name):
            return name 
        }
    }
}
  • 실제 사용
let yourMiddleSchoolName = SchoolDetail.middle(name: "몽이중학교")

print("yourMiddleSchoolName: \(yourMiddleSchoolName.getName())")

>>> yourMiddleSchoolName: 몽이중학교

💬 메서드 내의 switch, case는 아직 익숙치 않아도 많이 써보고 익히자

참고 자료

profile
몽이 누나의 코딩 일기

0개의 댓글