在这个switch语句的默认情况下,我试图在for循环中向后迭代,有一些例子说明在使用Int时如何执行此操作,但我没有找到任何变量。
func arrayLeftRotation(myArray: [Int], d:Int) {
var newArray = myArray
switch d {
case 1:
let rotationValue = newArray.removeLast()
newArray.insert(rotationValue, at: 0)
default:
let upperIndex = newArray.count - 1
let lowerIndex = newArray.count - d
for i in lowerIndex...upperIndex {
let rotationValue = newArray.remove(at: i)
newArray.insert(rotationValue, at: 0)
}
}
print(newArray)
}
所以我希望从upperIndex to lowerIndex
答案 0 :(得分:1)
您不能使用for ... in ...
语句执行此操作。使用for ... in ...
语句时,索引变量和范围都是不可变的,并且您无法控制范围的迭代方式。
但是,您可以使用多种替代方法,例如while
循环,stride
和递归。
如何使用stride
stride(from: upperIndex, through: lowerIndex, by: -1).forEach({ index in
let rotationValue = newArray.remove(at: index)
newArray.insert(rotationValue, at: 0)
})