也许我想多了或者脑抽筋了。
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/