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
Enumeration을 Int로 만듭니다.
예 :
https://github.com/rhodgkins/SwiftHTTPStatusCodes/blob/master/Sources/HTTPStatusCodes.swift
당신은 아마 그런 일을 할 수 있습니다.
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의 제안도 효과가 있습니다.