在 Swift 中,c 风格的 for 循环已被弃用,所以我切换到 stride 函数。
在第一个函数中,我使用了 c 风格的 for 循环。在第二个函数中,我使用了 stride 函数。createNumbers 输出为 [8, 7, 6, 5, 4, 3, 2] createNumbers2 输出为 [8, 7, 6, 5, 4] 我试图获得第一个输出。
这意味着如果我更改 endIdx 值,stride 函数将被忽略。有没有办法解决这个问题,使用 stride,这样 createNumbers2 也打印 3 和 2?
func createNumbers(lastNum: Int) -> [Int] {
var endIdx = lastNum
var answer : [Int] = []
for var i = 8; i >= endIdx; i -= 1 {
answer.append(i)
if i == 6 {
endIdx /= 2
}
}
return answer
}
func createNumbers2(lastNum: Int) -> [Int] {
var endIdx = lastNum
var answer : [Int] = []
for i in 8.stride(through: endIdx, by: -1) {
answer.append(i)
if i == 6 {
endIdx /= 2
}
}
return answer
}
print(createNumbers(4)) // [8, 7, 6, 5, 4, 3, 2]
print(createNumbers2(4)) // [8, 7, 6, 5, 4]