在这里有一个排序功能,当我将 - 递减器更改为-= 1
时,除去了一个错误,但我仍然得到syyntax错误。
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 {
答案 0 :(得分:4)
如有疑问,任何C风格的for
,无论其位置或嵌套级别如何,都可以简单地更改为while
循环:
var secondIndex = firstIndex
while secondIndex > -1 {
defer { i -= 1 }
// loop body
}
虽然您可以在案件中使用stride
。 (我不记得如何使用它,特别是在Swift 3中。)
答案 1 :(得分:3)
stride
确实是要走的路。此外,您似乎可以从使用enumerate()
中受益。试试这个:
for (firstIndex, key) in extract.enumerate() {
for secondIndex in firstIndex.stride(through: 0, by: -1) {
...
}
}
答案 2 :(得分:2)
检查一下: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)
}
}
答案 3 :(得分:-4)
正确的答案是使用包含的Swift sort
函数。您的所有代码都是如此,为什么要重新发明轮子? (顺便说一下,你的代码将每个元素与自己进行比较,这是完全没有必要的,然后它会加载extract
,然后在你进行构建数组时更好地移动元素。)