swift - 예제 - 열거 형 활용




Swift에서 터플의 열거 형 (4)

스위프트에서 열거 형의 열거 형을 만들 수 있습니까?

나는 다음과 같은 것을 만들고 싶다 :

enum ErrorCode: (Int, String) {
    case Generic_Error = (0, "Unknown")
    case DB_Error = (909, "Database")
}

하지만 컴파일되지 않습니다 ... 비슷한 결과를 얻을 수있는 방법이 있습니까?


@ 홀 렉스와 비슷한 솔루션이지만 함수 대신 var를 사용할 수 있습니다.

enum SomeType {
    case type1
    case type2
    case type3

    var typeNameAndDescription: (name: String, description: String) {
       switch self {
       case .type1:
            return ("type1 name", "type1 description")
        case .type2:
            return ("type2 name", "type2 description")
        case .type3:
            return ("type3 name", "type3 description")
       }
    }
}

나중에 :

let myType = SomeType.type1
let typeName = myType.typeNameAndDescription.name
let typeDescription = myType.typeNameAndDescription.description


당신은 아마 그런 일을 할 수 있습니다.

enum ErrorCode {
    case Generic_Error
    case DB_Error

    func values() -> (code: Int!, description: String?)! {
        switch self {
        case .Generic_Error:
            return (0, "Unknown")
        case .DB_Error:
            return (909, "Database")
        }
    }
}

나중에 그런 일을 할 수 있습니다.

let errorCode: ErrorCode = ErrorCode.Generic_Error;
if (errorCode.values().code == 0) {
    // do the business here...
}

신속한 열거 형은 튜플을 원시 값 유형으로 사용할 수 없습니다.

대체 접근법은 코드 저장과 그로부터 설명을 유도하는 것을 포함합니다 :

enum ErrorCode: Int, CustomStringConvertible {
    case Generic = 0
    case DB = 909

    var description: String {
        switch self {
        case .Generic:
            return "Unknown"
        case .DB:
            return "Database"
        }
    }
}

... 또는 코드 및 설명에 대한 관련 값을 열거 사례 자체에 저장합니다.

enum Error {
    case Generic(Int, String)
    case DB(Int, String)
}

당신이 상수 값을 찾고 있다면 struct 내에서 그들을 구성하는 @ matt의 제안도 효과가 있습니다.





swift