[英]Enumeration with raw values
Why I can't define enumeration with raw values like this? 为什么我不能用这样的原始值定义枚举?
enum Edges : (Double, Double) {
case TopLeft = (0.0, 0.0)
case TopRight = (1.0, 0.0)
case BottomLeft = (0.0, 1.0)
case BottomRight = (1.0, 1.0)
}
A tuple cannot be a raw value type of enum. 元组不能是枚举的原始值类型。 From The Swift Programming Language :
来自Swift编程语言 :
Raw values can be strings, characters, or any of the integer or floating-point number types.
原始值可以是字符串,字符或任何整数或浮点数类型。
You could create a custom getter though: 您可以通过以下方式创建自定义获取器:
enum Edges {
case TopLeft, TopRight, BottomLeft, BottomRight
var rawValue: (Double, Double) {
switch self {
case .TopLeft: return (0, 0)
case .TopRight: return (1, 0)
case .BottomLeft: return (0, 1)
case .BottomRight: return (1, 1)
}
}
}
Raw values can be strings, characters, or any of the integer or floating-point number types.
原始值可以是字符串,字符或任何整数或浮点数类型。
But there is an alternative solution for you: 但是,还有另一种解决方案:
enum Edges {
case TopLeft
case TopRight
case BottomLeft
case BottomRight
func getTuple() -> (Double, Double) {
switch self {
case .TopLeft:
return (0.0, 0.0)
case .TopRight:
return (1.0, 0.0)
case .BottomLeft:
return (0.0, 1.0)
case .BottomRight:
return (1.0, 1.0)
}
}
}
let a = Edges.BottomLeft
a.getTuple() // returning (0, 1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.