结构等价? typealias 是 "Swift" 的方法吗?

Equivalence of structs? is typealias the "Swift" way to do this?

也许我想多了或者脑抽筋了。

typealias myZero = reallyLongAndObfuscatedEnum.ZERO

假设我有一些遗留代码,需要将其转换为 Swift3。这当然是我正在处理的一个非常简化的版本。

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 是 "Swift" 的方法吗?

如果您要寻找的只是 reallyLongAndObfuscatedEnum.ZERO 的替代(和更短)名称,那么 typealias 是正确的选择。

冒着把你引向错误道路的风险(因为我没有完整的上下文),你可能还想看看 Swift 枚举中的 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"
        }
    }
}