Swift Academy · 课时

prefix、suffix 与 dropFirst

以声明式方式获取集合的一部分。

第 4 / 4 课13 个步骤

prefix、suffix 与 dropFirst 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

prefix(n)

prefix(n) 返回前 n 个元素组成的切片。即使 n 大于数组长度,也能安全使用。

let arr = [1, 2, 3, 4, 5]
print(Array(arr.prefix(3)))
print(Array(arr.prefix(99)))

suffix(n)

suffix(n) 返回最后 n 个元素组成的切片,同样会安全地限制范围。

let arr = [1, 2, 3, 4, 5]
print(Array(arr.suffix(2)))
print(Array(arr.suffix(0)))

dropFirst

dropFirst() 会丢弃第一个元素;dropFirst(n) 会丢弃前 n 个元素。

let arr = [10, 20, 30, 40]
print(Array(arr.dropFirst()))
print(Array(arr.dropFirst(2)))

dropLast

dropLast() 会从末尾移除元素。与其他方法一样,它返回一个切片。

let arr = [10, 20, 30, 40]
print(Array(arr.dropLast()))
print(Array(arr.dropLast(3)))

全部返回切片

这些方法中的每一个都返回 ArraySlice,而不是新数组。需要具体数组时再进行转换。

let arr = [1, 2, 3, 4]
let s = arr.prefix(2)
print(type(of: s))

对较大的 n 也安全

与使用超出范围的下标范围不同,这些方法不会崩溃。请求的数量超过现有元素时,只会返回可用的元素。

let arr = [1, 2]
print(Array(arr.prefix(10)))
print(Array(arr.dropFirst(10)))

prefix(while:)

prefix(while:) 会从开头获取元素,只要条件成立就继续,条件不成立时停止。

let arr = [2, 4, 6, 7, 8]
let evensAtStart = arr.prefix(while: { $0 % 2 == 0 })
print(Array(evensAtStart))

drop(while:)

drop(while:) 会在条件成立时跳过开头的元素,并返回其余部分。

let arr = [2, 4, 6, 7, 8]
let rest = arr.drop(while: { $0 % 2 == 0 })
print(Array(rest))

组合方法

您可以将这些方法链接起来,简洁地表达切片操作,例如获取除第一个和最后一个元素之外的所有元素。

let arr = [10, 20, 30, 40, 50]
let middle = arr.dropFirst().dropLast()
print(Array(middle))

查看与弹出模式

使用 first 查看第一个元素,使用 dropFirst() 获取剩余部分,这是处理列表时常见的函数式模式。

let queue = [100, 200, 300]
if let head = queue.first {
    let tail = Array(queue.dropFirst())
    print("head:", head, "tail:", tail)
}

意图清晰

与手动指定范围相比,这些方法能更好地表达意图。arr.suffix(3) 比 arr[(arr.count-3)...] 更清晰。

let arr = [1, 2, 3, 4, 5, 6]
print(Array(arr.suffix(3)))

快速检查

测试 prefix 和 drop 的行为。

回顾

prefix(n) 和 suffix(n) 从两端获取元素;dropFirst 和 dropLast 从两端移除元素。它们都返回切片,并且对超出大小的数量安全。prefix(while:) 和 drop(while:) 使用谓词。

let arr = [1, 2, 3, 4, 5]
print(Array(arr.prefix(2)), Array(arr.suffix(2)), Array(arr.dropFirst()))
免费开始

用 AI 导师学习 Swift — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
122
课程
409

常见问题解答

「prefix、suffix 与 dropFirst」课时是免费的吗?

是的 — 「prefix、suffix 与 dropFirst」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「prefix、suffix 与 dropFirst」这节课中我会学到什么?

以声明式方式获取集合的一部分。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「prefix、suffix 与 dropFirst」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用范围创建切片
  2. ArraySlice 的索引语义
  3. 将切片转换回数组
  4. prefix、suffix 与 dropFirst
← 返回 Swift Academy