Swift枚举原始值:不使用CGFloat = -1.0

时间:2014-11-20 16:20:55

标签: swift enums cgfloat

这不起作用?

enum Aspect : CGFloat {
    case Clockwise = 1.0
    case Anticlockwise = -1.0
}

在Anticlockwise行上,我被告知'enum case的原始值必须是字面值'

3 个答案:

答案 0 :(得分:7)

奇怪的是,带负数的浮点数不是文字,而是表达式。所以错误信息是正确的。

来自Swift编程语言:

  

与整数文字不同,负浮点数是   通过将一元减号运算符( - )应用于浮点来表示   字面值,如-42.0。结果是表达式,而不是表达式   浮点文字。

答案 1 :(得分:5)

这听起来像个错误。但是,如果省略小数部分,它似乎有效:

enum Aspect : CGFloat {
    case Clockwise = 1
    case Anticlockwise = -1
}

答案 2 :(得分:1)

这已在Swift 1.2(Xcode 6.3 beta)中修复。从发行说明:

  

负浮点文字现在在枚举中被接受为原始值。

所以你的代码现在编译并且没有问题, 您现在还可以定义非整数负枚举值, 这在以前是不可能的:

enum Aspect : CGFloat {
    case Clockwise = 1.0
    case Anticlockwise = -1.0
    case Strange = -1.25
}