enum 개념응용

신동준·2022년 4월 30일
0

enum Series

목록 보기
6/7

그동안 배운 enum 개념을 응용해서 iPhone enum 만들고 코드를 작성해보았다

enum iPhone:CaseIterable {
    case iPhone4(SoldOut: Bool), iPhone5(SoldOut: Bool),iPhone6(SoldOut: Bool),iPhone7(SoldOut: Bool),iPhone8(SoldOut: Bool),iPhone9(SoldOut: Bool),iPhoneX(SoldOut: Bool),iPhone11(SoldOut: Bool),iPhone12(SoldOut: Bool),iPhone13(SoldOut: Bool)
    
        static var allCases: [iPhone] {
            return [.iPhone4(SoldOut: true), .iPhone5(SoldOut: true), .iPhone6(SoldOut: false), .iPhone7(SoldOut: false), .iPhone8(SoldOut: false), .iPhone9(SoldOut: false), .iPhoneX(SoldOut: false), .iPhone11(SoldOut: false), .iPhone12(SoldOut: false), .iPhone13(SoldOut: false)]
        }
        @available(*, unavailable)
        case iPhone3(SoldOut:Bool)
        case iPhone2(SoldOut:Bool)
        case iPhone(SoldOut:Bool)

    
}


for iPhoneModel in iPhone.allCases {
    print(iPhoneModel)
}

let iPhoneList = iPhone.allCases.map({ "\($0)"}).joined(separator:"...")

print(iPhoneList)

let myIphone: iPhone  = iPhone.iPhone13(SoldOut: false)

switch myIphone {
case .iPhone4(SoldOut: false):
    print("I have iPhone 4")
case .iPhone5(SoldOut: false):
    print("I have iPhone 5")
case .iPhone6(SoldOut: false):
    print("I have iPhone 6")
case .iPhone7(SoldOut: false):
    print("I have iPhone 7")
case .iPhone8(SoldOut: false):
    print("I have iPhone 8")
case .iPhoneX(SoldOut: false):
    print("I have iPhone X")
case .iPhone11(SoldOut: false):
    print("I have iPhone 11")
case .iPhone12(SoldOut: false):
    print("I have iPhone 12")
case .iPhone13(SoldOut: false):
    print("I have iPhone 13")
default:
    print("i have not iPhone")
}
/* 출력값
 iPhone4(SoldOut: true)
 iPhone5(SoldOut: true)
 iPhone6(SoldOut: false)
 iPhone7(SoldOut: false)
 iPhone8(SoldOut: false)
 iPhone9(SoldOut: false)
 iPhoneX(SoldOut: false)
 iPhone11(SoldOut: false)
 iPhone12(SoldOut: false)
 iPhone13(SoldOut: false)
 iPhone4(SoldOut: true)...iPhone5(SoldOut: true)...iPhone6(SoldOut: false)...iPhone7(SoldOut: false)...iPhone8(SoldOut: false)...iPhone9(SoldOut: false)...iPhoneX(SoldOut: false)...iPhone11(SoldOut: false)...iPhone12(SoldOut: false)...iPhone13(SoldOut: false)
 I have iPhone 13*/

enum assosiatedValue, CaseIterable, Switch문법 활용한것이다

profile
Swift 예비개발자

0개의 댓글