【问题标题】:Swift enum raw value: not working with CGFloat = -1.0Swift 枚举原始值:不使用 CGFloat = -1.0
【发布时间】:2015-01-18 14:27:15
【问题描述】:

这怎么办?

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

在逆时针行上,有人告诉我“枚举大小写的原始值必须是文字”

【问题讨论】:

    标签: swift enums cgfloat


    【解决方案1】:

    这听起来像是一个错误。但是,如果您省略小数部分,它似乎可以工作:

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

    【讨论】:

    【解决方案2】:

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

    来自 Swift 编程语言:

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

    【讨论】:

      【解决方案3】:

      这已在 Swift 1.2(Xcode 6.3 beta)中得到修复。来自发行说明:

      现在接受负浮点字面量作为枚举中的原始值。

      所以您的代码现在可以毫无问题地编译和运行, 您现在还可以定义非整数负枚举值, 这是以前不可能的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-07
        • 2015-02-26
        • 2016-07-11
        相关资源
        最近更新 更多