相关疑难解决方法(0)

按索引移位数组中的元素

给定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子句以命令式样式实现此函数,但我正在寻找的是功能实现.

算法很简单:

  1. 通过提供的索引将数组拆分为两个
  2. 将第一个数组追加到第二个数组的末尾

有没有办法在功能风格中实现它?

我完成的代码:

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)

arrays generics ios swift

13
推荐指数
3
解决办法
1万
查看次数

标签 统计

arrays ×1

generics ×1

ios ×1

swift ×1