swift - 如何快速复制数组的末尾?

标签 swift

一定有一些非常优雅的方法可以使用 Swift 从某个索引开始复制数组的末尾,但我就是找不到它,所以我以此结尾:

func getEndOfArray<T>( arr : [T], fromIndex : Int? = 0) -> [T] {
    var i=0;
    var newArray : [T] = [T]()
    for item in arr {
        if i >= fromIndex {
            newArray.append(item)
        }
        i = i + 1;
    }
    return newArray // returns copy of the array starting from index fromIndex
}

有没有更好的方法可以做到这一点而无需额外的功能?

最佳答案

还有一个……

let array = [1, 2, 3, 4, 5]
let fromIndex = 2
let endOfArray = array.dropFirst(fromIndex)
print(endOfArray) // [3, 4, 5]

这给出了一个 ArraySlice 对大多数人来说应该足够好了 目的。如果你需要一个真正的 Array,使用

let endOfArray = Array(array.dropFirst(fromIndex))

如果起始索引大于(或等于)元素计数,则创建一个空数组/切片。

关于swift - 如何快速复制数组的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37414801/

相关文章:

ios - 我应该使用 segue 在注册屏幕和我的应用程序的其余部分之间移动吗

swift - 如何将 Sprite 添加到 View Controller ?

ios - CoreData 类在单元测试中未匹配

ios - Swift - subview 在旋转时保持在相同位置

swift - 在 WatchOS 2 中以编程方式打开接口(interface) Controller

ios - Segue VS didDeselectRowAtIndexPath

swift - 模糊地使用backgroundColor swift

ios - swift spritekit - 无法使用类型为 'runAction' 的参数调用 'SKAction!'

swift - 图像变化取决于 UISlider 值

ios - 如何以编程方式更改布局边距