Swift 3和代码转换器用于反向循环数组

时间:2017-03-08 01:26:35

标签: swift3

我的代码与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>

2 个答案:

答案 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)

假设FCaalogIdx是数组的最后一个索引

for i in FCaalogArr.indicies.reversed()会更好