当我更新到 Xcode Beta 4 时,我在创建范围时开始在我的项目中遇到奇怪的错误(例如 Range<Float>
)。它说Type 'Float' does not conform to protocol 'ForwardIndex'
.如果有人能告诉我我做错了什么,那就太好了。
谢谢!
编辑:
它不依赖于我的项目。我打开了一个空白的 Playground ,我得到了同样的错误。
最佳答案
的确,Float
不符合ForwardIndex
。所有 UInt*
和 Int*
类型都可以。不幸的是,目前似乎无法在范围内使用非 ForwardIndex
类型。如果您认为这是错误的,file a bug .
危险地带
您可以通过实现 successor()
为 Float
勉强实现 ForwardIndex
:
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")
// ...
您也许可以通过某种方式解决这个问题,但这可能不值得。如果您尝试比较 float ,舍入误差无论如何都会把您搞得一团糟!
关于ios - 获取 "Type ' Float' 不符合协议(protocol) 'ForwardIndex' “Xcode Beta 4 中的范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917259/