我的代码与swift3不兼容
for var i = FCatalogIdx-1; i > -1; i -=1 {
// access items in array FCaalogArr
}
代码转换器建议转换为
for i in ((-1 + 1)...FCatalogIdx-1).reversed() {
似乎与:
相同for i in (0...FCatalogIdx-1).reversed() {
这是我最接近我的旧代码吗?如果是这样,是否建议使用代码转换器建议 - ( - 1 + 1)看起来很难看,但我怀疑它是否给出了原始c风格循环逻辑的提示? / p>
答案 0 :(得分:2)
你不应该使用(-1+1)
因为这不必要地混淆。此外,使用半开放范围运算符 ..<
创建一个不包含最终索引的范围:
for i in (0 ..< FCatalogIdx).reversed() {
}
半开放范围运算符 ..<
优于闭区域运算符 ...
的优点是可以创建一个空的范围。
考虑这个例子:
let n = 0
for i in 0 ..< n {
print("hello") // range is empty, so this is never printed
}
for i in 0 ... n-1 { // fatal error: Can't form Range with upperBound < lowerBound
print("hello")
}
答案 1 :(得分:0)
for i in FCaalogArr.indicies.reversed()
会更好