在Swift中,最简单的方法来获取数组中的最后两项?

有没有一种更干净的方法来获取Swift中数组的最后两项?通常,我尝试避免使用这种方法,因为与索引一一对应很容易。(在此示例中,使用Swift 1.2。)

// Swift -- slices are kind of a hassle?

let oneArray = ["uno"]

let twoArray = ["uno", "dos"]

let threeArray = ["uno", "dos", "tres"]

func getLastTwo(array: [String]) -> [String] {

if array.count <= 1 {

return array

} else {

let slice: ArraySlice<String> = array[array.endIndex-2..<array.endIndex]

var lastTwo: Array<String> = Array(slice)

return lastTwo

}

}

getLastTwo(oneArray) // ["uno"]

getLastTwo(twoArray) // ["uno", "dos"]

getLastTwo(threeArray) // ["dos", "tres"]

我希望有一些更接近Python的便利。

## Python -- very convenient slices

myList = ["uno", "dos", "tres"]

print myList[-2:] # ["dos", "tres"]

回答:

使用Swift 5时,您可以根据需要选择以下模式之一,以便从数组的最后两个元素中获取新的数组。


回答:

使用Swift,符合Collection协议的对象具有suffix(_:)方法。数组suffix(_:)具有以下声明:

func suffix(_ maxLength: Int) -> ArraySlice<Element>

返回一个子序列,直到指定的最大长度,该子序列包含集合的最终元素。

用法:

let array = [1, 2, 3, 4]

let arraySlice = array.suffix(2)

let newArray = Array(arraySlice)

print(newArray) // prints: [3, 4]


回答:

作为suffix(_:)方法的替代方法,您可以使用Arraysubscript(_:)下标:

let array = [1, 2, 3, 4]

let range = array.index(array.endIndex, offsetBy: -2) ..< array.endIndex

//let range = array.index(array.endIndex, offsetBy: -2)... // also works

let arraySlice = array[range]

let newArray = Array(arraySlice)

print(newArray) // prints: [3, 4]

以上是 在Swift中,最简单的方法来获取数组中的最后两项? 的全部内容, 来源链接: utcz.com/qa/430502.html

回到顶部