ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift Enum - 2
    Programming/Swift(iOS) 2021. 4. 1. 20:58
    728x90

    enum 두번째 예제입니다.

     

    아래 예제에서 arr를 순회하면서 출력하려면 arr의 요소에 따라서 분기하는 처리가 필요합니다. 

    또한 'Any' 타입이기때문에 switch ~ case에서 항상 'default'가 붙어야 합니다.

    let arr:[Any] = [
        Date(), "Hello", 100, 3.14]
    
    
    for element in arr {
        switch element {
        case let v as Date:
            print("Date - \(v)")
        case let v as String:
            print("String - \(v)")
        case let v as Int:
            print("Int - \(v)")
        case let v as Float:
            print("Float - \(v)")
        default:
            print("unSupported type")
    
        }
    }
    for element in arr {
        switch element {
        case is Date:
            print("Date")
        case is String:
            print("String")
        case is Int:
            print("Int")
        case is Float:
            print("Float")
        default: //any는 어떤 타입도 포함할 수 있으므로 default추가
            print("unSupport Type")
        }
    }

    하지만 enum을 이용하면 좀 더 깔끔히 표현될 수가 있습니다. 

     

    collection에 나올 수 있는 타입이 DataType으로 제한되기 때문에, case가 실패할 때를 대비하여 추가하는 'default'에 대한 부분이 필요가 없습니다.

    enum DataType {
        case date(Date)
        case string(String)
        case int(Int)
        case float(Float)
    }
    
    let arr2:[DataType] = [.date(Date()), .string("Hello"), .int(42), .float(3.14)]
    
    for ele in arr2 {
        //default를 사용안해도 되고, 타입캐스팅에 대해서 안정성 보장, unsupport type이 필요하지 않음
        switch ele {
        case let .date(date):
            print(date)
        case let .string(string):
            print(string)
        case let .int(int):
            print(int)
        case let .float(float):
            print(float)
    	}
    }

    'Programming > Swift(iOS)' 카테고리의 다른 글

    Swift Enum - 4  (0) 2021.04.01
    Swift Enum - 3  (0) 2021.04.01
    Swift Enum - 1  (0) 2021.04.01
    Swift Tuple  (0) 2021.04.01
    Swift 언어의 특징  (0) 2021.04.01
Designed by Tistory.