包含 2 个循环的函数

function containing 2 loops

这里有一个排序功能,当我将 -- 递减器更改为 -= 1 时,它消除了一个错误,但我仍然遇到语法错误。

 func iSortBort(myList: Array) -> Array {

    var extract = myList

    for firstIndex in 0..<extract.count {

        let key = extract[firstIndex]

        for var secondIndex = firstIndex; secondIndex > -1; secondIndex--1 {

如有疑问,任何 C 风格 for,无论其位置或嵌套级别如何,都可以简单地更改为 while 循环:

var secondIndex = firstIndex
while secondIndex > -1 {
    defer { i -= 1 }
    // loop body
}

尽管在您的情况下您可能能够逃脱 stride。 (虽然我不记得如何使用它,尤其是在 Swift 3 中。)

看看这个:http://bjmiller.me/post/137624096422/on-c-style-for-loops-removed-from-swift-3

喜欢递减:

for secondIndex in (0...firstIndex).reverse() {
    print("comparing \(key) and \(myList[secondIndex])")
    if key < extract[secondIndex] {
        extract.removeAtIndex(secondIndex + 1)
        extract.insert(key, atIndex: secondIndex)
    }
}

stride 确实是要走的路。此外,您似乎会从使用 enumerate() 中获益。试试这个:

for (firstIndex, key) in extract.enumerate() {
    for secondIndex in firstIndex.stride(through: 0, by: -1) {
        ...
    }
}

正确答案是只使用包含的 Swift sort 函数。这就是您的所有代码,那么为什么要重新发明轮子呢? (顺便说一句,你的代码将每个元素与自身进行比较,这是完全没有必要的,它会加载 extract 然后在其中移动元素,而最好只是在你进行时构建数组。)