我试图在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错误还是我做错了什么?
答案 0 :(得分:3)
在https://github.com/apple/swift/blob/master/stdlib/public/core/Stride.swift中声明
UnsignedIntegerTypes都有一个带符号的Stride类型。
这是有道理的,否则将无法从较大的数字迭代到较小的数字。
因此在你的情况下它应该是
let by = Int(2)
或只是
let by = 2