获得" Type' Float'不符合协议' ForwardIndex'" Xcode Beta 4中的范围出错

时间:2014-07-23 17:38:51

标签: ios xcode swift

当我更新到Xcode Beta 4时,当我创建范围(如Range<Float>)时,我的项目开始出现一个奇怪的错误。它说Type 'Float' does not conform to protocol 'ForwardIndex'。如果有人能告诉我我做错了什么,那就太好了。

谢谢!

修改

这不依赖于我的项目。我打开了一个空白的游乐场,我得到了同样的错误。enter image description here

1 个答案:

答案 0 :(得分:1)

实际上,Float不符合ForwardIndex。所有UInt*Int*类型都有。不幸的是,似乎非ForwardIndex类型目前无法在范围中使用。如果您认为这是错误的,file a bug


危险区域

通过实施ForwardIndex,您可以为Float实现successor()的实施:

extension Float : ForwardIndex {
    // a method of the private _Incrementable protocol
    public func successor() -> Float { return self + 1 }
}
let f = Range<Float>(start: 3, end: 4) // "Range(3.0,4.0)"

但是一旦你尝试以某种方式使用它就会中断:

switch x {
case f: // 'Range<Float>' is not convertible to '_OptionalNilComparisonType'
    println("f")
// ...

你可能会以某种方式解决这个问题,但这可能不值得。如果您正在尝试比较浮点数,那么舍入错误会让您感到困惑!