【发布时间】:2023-03-27 14:07:01
【问题描述】:
如何在 Swift 中从 Int 数组中删除第一个 n 元素?
例如:
var array = [0, 1, 2, 3, 4, 5, 6]
let n = 4
结果数组包含以下元素:
[4, 5, 6]
【问题讨论】:
如何在 Swift 中从 Int 数组中删除第一个 n 元素?
例如:
var array = [0, 1, 2, 3, 4, 5, 6]
let n = 4
结果数组包含以下元素:
[4, 5, 6]
【问题讨论】:
let result = Array(array.dropFirst(n))
(感谢 KPM 和 WolfLink 指出 let result = array.dropFirst(n) 将 result 设置为 ArraySlice,如果原始数组被释放,它将不再有效。)
【讨论】:
result 是一个 ArraySlice,其索引与原始数组中的索引相同。尝试访问 result[0] 将导致 Index Out Of Bounds 错误。
let result = Array(array.dropFirst(n)) 将使result 成为一个具有自己索引的单独数组(这样result[0] 将是有效的,假设结果不为空)
比约翰逊先生的回答稍微简洁:
let result = array.suffix(3)
我还是会选择他的,因为 dropFirst 比 suffix 更直观/可读。
【讨论】:
您可以使用范围对数组进行切片:
var array = [1,2,3,4,5,6]
let n = 4
print(array[n..<array.count]) //[4,5,6]
【讨论】:
Cannot subscript a value of type '[String]' with an index of 'CountableRange<Int>'.