HIT해

[Swift 기초문법 - 3] enum 케이스 나누기 본문

Swift/Swift 기초문법

[Swift 기초문법 - 3] enum 케이스 나누기

힛해 2024. 7. 9. 06:02
728x90

 

import UIKit

enum Animal {
//    case dog
//    case cat
//    case bird
    case dog, cat, bird
}

// 값이 변경되지 않는 상수
let pet = Animal.bird

print("My pet is",pet)

 

print로 출력할 변수가 하나라면 위의 방법처럼 만들어도 된다!

 

결과화면

 

값을 가지고 있는 enum 사용하기!

 

import UIKit

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

print("첫번쨰 출력",Number.first)

print("두번째 출력",Number.second.rawValue)

 

이때 enum타입의 값을 지정해주지 않으면 rawvalue ( Int값들 )를 가질 수 없다!

 

결과화면

 

enum은 값을 가지고 있고 가지고 있는 그 값의 값에 접근하기 위해서는 rawvalue를 사용하면 된다!

 

enum의 값을 나중에 할당받아서 사용하는 방법이다!

 

import UIKit

enum Food {
    case chicken(name:String)
    case pizza(name:String)
    case count(num:Int)
}

let tmp = Food.chicken(name: "양념치킨")
let subtmp = Food.count(num: 5)

print("\(tmp) : \(subtmp)")

 

case에 enum명과 ( 매개변수명 : 타입 ) 을 선언해주고 사용할때는 위와같이 사용하면 된다!

 

결과화면

 

그런데 우리는 rawValue만 보고싶은데 enum명과 매개변수명까지 보인다.

 

enum에 함수를 선언해주면 해결된다!

enum Food {
    case chicken(name:String)
    case pizza(name:String)
    case count(num:Int)
    
    // String형태로 반환하겠다!
    func getRawValue() -> String{
    	
        // 위에 선언해둔 case들에 대한 모든 경우를 작성해주어야한다.
        switch self {
        
        // let을 매개변수 앞 또는 case 뒤에 붙여줘야한다
        case .chicken(let name):
            return name
        case let .pizza(name):
            return name
        case .count(let num):
            return "\(num)"
        }
    }
}

let tmp = Food.chicken(name: "양념치킨")
let subtmp = Food.count(num: 5)

print("\(tmp.getRawValue()) : \(subtmp.getRawValue())")

 

결과화면