如何在swift中复制数组的结尾?

Ter*_*nen 3 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
}
Run Code Online (Sandbox Code Playgroud)

没有额外的功能有更好的方法吗?

joe*_*ern 9

你可以使用后缀:

let array = [1,2,3,4,5,6]
let lastTwo = array.suffix(2) // [5, 6]
Run Code Online (Sandbox Code Playgroud)

如评论中所述:这为您提供了一个ArraySlice足以满足大多数情况的对象.如果你真的需要一个Array物体,你必须施放它:

let lastTwoArray = Array(lastTwo)
Run Code Online (Sandbox Code Playgroud)


Mar*_*n R 8

而另一个......

let array = [1, 2, 3, 4, 5]
let fromIndex = 2
let endOfArray = array.dropFirst(fromIndex)
print(endOfArray) // [3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

这给出了一个ArraySlice对大多数用途来说应该足够好的东西.如果你需要真实的Array,请使用

let endOfArray = Array(array.dropFirst(fromIndex))
Run Code Online (Sandbox Code Playgroud)

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


Jay*_*win 5

您现在可以下标一个开放式范围。这将包括从索引 5 开始的元素。

斯威夫特 4.2

array[5...]
Run Code Online (Sandbox Code Playgroud)