使用范围创建切片
提取子序列而无需复制。
使用范围创建切片 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
使用范围进行下标访问
使用范围对数组进行下标访问时,Swift 不会将元素复制到新数组中,而是返回一个与 original 数组共享存储空间的 ArraySlice。
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice)
print(type(of: slice))半开范围
运算符 ..< 会创建半开范围。1..<4 包含索引 1、2 和 3,但不包含索引 4。
let letters = ["a", "b", "c", "d", "e"]
let middle = letters[1..<4]
print(middle)闭范围切片
如果希望包含上界,请对闭范围使用 ...。1...3 涵盖索引 1、2 和 3。
let scores = [88, 92, 75, 64, 99]
let closed = scores[1...3]
print(closed)单侧范围
Swift 支持单侧范围。arr[2...] 表示从索引 2 到末尾,而 arr[..<2] 表示索引 2 之前的所有内容。
let data = [1, 2, 3, 4, 5, 6]
print(data[3...])
print(data[..<3])切片是视图
ArraySlice 是父数组的一个视图。由于在修改或转换之前不会复制元素,因此创建它的成本很低。
let big = Array(1...1000)
let window = big[100..<105]
print(window)遍历切片
您可以像遍历数组一样遍历切片。其中的值与父数组保存的元素相同。
let words = ["sun", "moon", "star", "comet"]
let pair = words[1..<3]
for w in pair {
print(w)
}字符串数组的切片
切片适用于任何元素类型。这里我们从一个名称数组中截取一个范围。
let names = ["Ada", "Bob", "Cleo", "Dan", "Eve"]
let some = names[0..<2]
print(some)结合 count 使用
您可以使用数组的 count 动态构建范围,以取得最后几个元素。
let nums = [5, 10, 15, 20, 25]
let lastTwo = nums[(nums.count - 2)..<nums.count]
print(lastTwo)空切片
下界和上界相等的范围会生成空切片。这是 valid 且安全的。
let arr = [1, 2, 3, 4]
let empty = arr[2..<2]
print(empty)
print(empty.isEmpty)切片与求和
由于切片仍然遵循相同的协议,因此您可以直接对其调用 reduce 等方法。
let values = [2, 4, 6, 8, 10]
let sum = values[1..<4].reduce(0, +)
print(sum)切片为何重要
切片让您无需承担复制成本,就能处理大型数组的子部分。这对于二分查找或滑动 window 等算法非常有用。
let series = Array(1...20)
let firstHalf = series[..<10]
let secondHalf = series[10...]
print(firstHalf.count, secondHalf.count)快速检查
测试您对范围切片的理解。
回顾
您已经了解到,使用范围对数组进行下标访问会返回与父数组共享存储空间的 ArraySlice。半开范围 ..< 不包含上界,闭范围 ... 包含上界,而单侧范围可以低成本地取得前缀或后缀。
let r = [10, 20, 30, 40]
print(r[1..<3])
print(r[1...])
print(r[..<2])常见问题解答
「使用范围创建切片」课时是免费的吗?
是的 — 「使用范围创建切片」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「使用范围创建切片」这节课中我会学到什么?
提取子序列而无需复制。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「使用范围创建切片」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。