当我更新到Xcode Beta 4时,当我创建范围(如Range<Float>
)时,我的项目开始出现一个奇怪的错误。它说Type 'Float' does not conform to protocol 'ForwardIndex'
。如果有人能告诉我我做错了什么,那就太好了。
谢谢!
修改
这不依赖于我的项目。我打开了一个空白的游乐场,我得到了同样的错误。
答案 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")
// ...
你可能会以某种方式解决这个问题,但这可能不值得。如果您正在尝试比较浮点数,那么舍入错误会让您感到困惑!