ArraySlice<URL> 是 Swift 中的一种“数组切片类型”。它表示的是对原数组中某一段连续元素的视图(view),而不是一份新的拷贝。
Array是整个数组,ArraySlice是数组的一段区间。
例如:
let urls: [URL] = [...]
let slice = urls.prefix(3)
数组prefix方法返回ArraySlice<URL>类型。
ArraySlice<URL>不会重新创建新的数组,而是共享原数组的底层存储。
因此,当编译器要求返回数组,而不是数组切片类型时,需要使用 Array() 转换:
return Array(slice)
复制一个新的数组(独立存储)。
和索引的区别在于,Array索引从0开始,ArraySlice保留原索引。
let a = [10, 20, 30, 40]
let s = a[1...2] // ArraySlice<Int>
s[1] // OK
s[0] // 崩溃(不存在 index 0)
总结
需要遍历子区间(避免复制)、批处理数据块时,使用ArraySlice。
需要转换为Array类型时,使用Array() 将数据持久化:
let arr = Array(slice)
