Swift ArraySlice结构
Swift ArraySlice结构

Swift ArraySlice结构

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)

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注