给定n个元素的数组,即
var array = [1, 2, 3, 4, 5]
我可以写一个扩展名,Array所以我可以修改数组来实现这个输出[2, 3, 4, 5, 1]:
mutating func shiftRight() {
append(removeFirst())
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这样一个函数,可以通过任何索引,正面或负面移动数组.我可以使用if-else子句以命令式样式实现此函数,但我正在寻找的是功能实现.
算法很简单:
有没有办法在功能风格中实现它?
我完成的代码:
extension Array {
mutating func shift(var amount: Int) {
guard -count...count ~= amount else { return }
if amount < 0 { amount += count }
self = Array(self[amount ..< count] + self[0 ..< amount])
}
}
Run Code Online (Sandbox Code Playgroud)