如何在范围为

时间:2018-03-10 18:19:52

标签: swift

在这个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

算起来

1 个答案:

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