swift - 结构等价? typealias 是执行此操作的 "Swift"方法吗?

标签 swift struct enums equivalence

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

typealias myZero = reallyLongAndObfuscatedEnum.ZERO

假设我有一些遗留代码,需要将其转换为 Swift 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 是执行此操作的“Swift”方式吗?

最佳答案

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

冒着把你引向错误道路的风险(因为我没有完整的上下文),你可能还想看看 Associated Values在 Swift 枚举中。例如,您可以将枚举重写为

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"
        }
    }
}

关于swift - 结构等价? typealias 是执行此操作的 "Swift"方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41272422/

相关文章:

ios - 当尝试快速使用 cocoapods 时出现错误 : bridging header does not exist?

c - 从数组中获取 C 中某些值的内存地址

c - 将参数传递给 _beginthread()——怎么了?

java - 使用 guice(或 Spring)将依赖项注入(inject)到枚举中

ios - 何时在 Swift 中使用泛型

iOS 需要很长时间才能在 HTTP 请求后更新 View ?

swift - iOS 13 奇怪的搜索 Controller 差距

struct - Golang 在结构之间切换

dart - 如何将Enum包含在Dart类中?

c# - 在 C# 中使用枚举作为属性类