【发布时间】:2014-11-04 16:12:35
【问题描述】:
根据The Swift Programming Language,我应该能够使用“字符串、字符或任何整数或浮点数类型”的原始值创建一个 Swift 枚举。但是当我尝试时:
enum BatteryVoltage: Float {
case v3v7 = 3.7
case v5v0 = 5.0
case v7v4 = 7.4
case v11v1 = 11.1
case v12v0 = 12.0
}
...我得到一个编译错误:
Raw value for enum case is not unique
在 v7v4 线上。它与注释掉的那个编译得很好。但是啊,它看起来对我来说很独特。如果我将值设为 7.41、7.3 或其他值,它编译得很好。这是怎么回事? Swift 错误?
【问题讨论】:
-
这看起来绝对像一个错误。如果一个枚举值恰好等于“另一个枚举值的 2 倍”(但不是整数),这似乎会发生。
-
你知道吗,你是对的。回答您的评论,我会接受。 (并归档雷达。叹息。)
-
我猜这可能与浮点数的二进制表示有关。也许枚举的相等比较会截断一些位。
-
雷达归档,rdar://18878723
-
现在在 Swfit 2 中,这不是错误。