【发布时间】:2015-01-18 14:27:15
【问题描述】:
这怎么办?
enum Aspect : CGFloat {
case Clockwise = 1.0
case Anticlockwise = -1.0
}
在逆时针行上,有人告诉我“枚举大小写的原始值必须是文字”
【问题讨论】:
这怎么办?
enum Aspect : CGFloat {
case Clockwise = 1.0
case Anticlockwise = -1.0
}
在逆时针行上,有人告诉我“枚举大小写的原始值必须是文字”
【问题讨论】:
这听起来像是一个错误。但是,如果您省略小数部分,它似乎可以工作:
enum Aspect : CGFloat {
case Clockwise = 1
case Anticlockwise = -1
}
【讨论】:
奇怪的是,带有减号的浮点数不是文字,而是表达式。所以错误信息是正确的。
来自 Swift 编程语言:
与整数文字不同,负浮点数是 通过将一元减号运算符 (-) 应用于浮点数来表示 字面量,如 -42.0。结果是一个表达式,而不是一个 浮点字面量。
【讨论】:
这已在 Swift 1.2(Xcode 6.3 beta)中得到修复。来自发行说明:
现在接受负浮点字面量作为枚举中的原始值。
所以您的代码现在可以毫无问题地编译和运行, 您现在还可以定义非整数负枚举值, 这是以前不可能的:
enum Aspect : CGFloat {
case Clockwise = 1.0
case Anticlockwise = -1.0
case Strange = -1.25
}
【讨论】: