结构等价? 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"
}
}
}
也许我想多了或者脑抽筋了。
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"
}
}
}