2016-12-21 7 views
0

어쩌면 나는 이것을 생각하거나 뇌가 쇠약 해지는 것 이상입니다.구조체와 동등한가요? 이 일을하는 "스위프트"방식의 타 탈리아입니까?

typealias myZero = reallyLongAndObfuscatedEnum.ZERO 

의 내가 일부 레거시 코드를 가지고 있고 이것은 물론 내가 처리하고있어 매우 단순화 된 버전입니다 스위프트 (3)로 변환 할 필요가 있다고 가정 해 봅시다. 입력하는 대신 이제

enum reallyLongAndObfuscatedEnum { 

    ///zero 
    struct ZERO { 
    static let float_t:Float32 = Float32(0) 
    static let double_t:Float64 = Float64(0) 
    static let cgfloat_t:CGFloat = CGFloat(0) 
    static let desc:String  = "/* nothingness, nada, it is the void */" 
    } 
} 

:

ReallyLongEquation * reallyLongAndObfuscatedEnum.ZERO.cgfloat_t 

내가 사용할 수 있습니다

ReallyLongEquation * myZero.cgfloat_t 

이 작업을 수행 할 수있는 "스위프트"방법 typealias인가?

답변

2

reallyLongAndObfuscatedEnum.ZERO의 대체 이름 (더 짧은 이름)을 찾으려면 예 typealias이 좋습니다.

(전체 컨텍스트가 없기 때문에) 잘못된 경로로 안내 할 위험이 있으므로 스위프트 열거 형에서 Associated Values을보고 싶을 수도 있습니다. 예를 들어 열거 형을 다시 쓸 수 있습니다.

enum Example { 
    case Zero(float_t: 0.0f, double_t: 0.0, cgfloat_t: CGFloat(0)) 

    var description: String { 
     switch self { 
     case .Zero: 
      return "The Emptiness of Void" 
     } 
    } 
}