在Swift 2.2中的UInt上使用stride()将无法编译

时间:2016-03-28 06:15:52

标签: swift stride swift2.2

我试图在UInt变量上使用stride()函数,但代码不会编译:

let s = UInt(1)
let by = UInt(2)
let to = UInt(10)

for i: UInt in s.stride(to: to, by: by) {

}

编译错误是:

无法使用类型'(to:UInt,by:UInt)'

的参数列表调用'stride'

Swift 2.2文档指出它应该是可能的:http://swiftdoc.org/v2.2/type/UInt/#func-stride-to_by_

这是一个Swift错误还是我做错了什么?

1 个答案:

答案 0 :(得分:3)

https://github.com/apple/swift/blob/master/stdlib/public/core/Stride.swift中声明

  

UnsignedIntegerTypes都有一个带符号的Stride类型。

这是有道理的,否则将无法从较大的数字迭代到较小的数字。

因此在你的情况下它应该是

let by = Int(2)

或只是

let by = 2