Swift Academy · 课时

函数组合与数据管道

将小型函数组合成更大的转换流程,构建数据管道。

第 3 / 4 课12 个步骤

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

欢迎

函数组合会将小而专注的函数组合成更大的转换。这是函数式编程的核心:用简单部分构建复杂行为。

手动组合

```swift func double(_ n: Int) -> Int { n * 2 } func addOne(_ n: Int) -> Int { n + 1 } let result = addOne(double(5)) // 11 ```

使用辅助函数进行组合

```swift func compose(_ f: @escaping (B)->C, _ g: @escaping (A)->B) -> (A)->C { { f(g($0)) } } let doubleAndAdd = compose(addOne, double) print(doubleAndAdd(5)) // 11 ```

自定义 >>> 运算符

```swift infixop precedencegroup CompositionPrecedence { ... } func >>> (f: @escaping (A)->B, g: @escaping (B)->C) -> (A)->C { { g(f($0)) } } let pipeline = double >>> addOne >>> String.init print(pipeline(5)) // "11" ```

使用 map/filter 链构建管道

```swift let process: ([Int]) -> [String] = { nums in nums.filter { $0 > 3 }.map { String($0 * 2) } } print(process([1,2,3,4,5])) // ["8","10"] ```

无参数风格

无参数风格避免为中间参数命名: ```swift let words = ["hello","WORLD","Swift"] let lower = words.map { $0.lowercased() } // named let lower2 = words.map(\.description) // point-free where applicable ```

将 KeyPaths 用作函数

Swift 的键路径可以用作函数: ```swift struct User { var name: String } let users = [User(name:"Alice"),User(name:"Bob")] let names = users.map(\.name) // ["Alice","Bob"] ```

构建数据管道

```swift let pipeline: (String) -> Int? = { s in let trimmed = s.trimmingCharacters(in:.whitespaces) guard !trimmed.isEmpty else { return nil } return Int(trimmed) } [" 42 "," ","7"].compactMap(pipeline) // [42,7] ```

部分应用

```swift func add(_ a: Int) -> (Int) -> Int { { a + $0 } } let add5 = add(5) print([1,2,3].map(add5)) // [6,7,8] ```

为什么组合很重要

优点: • 每个函数都小巧且易于测试 • 数据管道从上到下清晰易读 • 重用:`double` 可以单独使用,也可以用于任何数据管道 • 惰性:与 `.lazy` 结合,避免产生中间分配

快速检查

Swift 的哪项特性可以让键路径直接用作 map 中的转换函数?

回顾

要点: • 将小型函数组合成更大的转换 • 使用 `>>>` 或手动组合来构建可重用的数据管道 • 将键路径用作函数,以简洁地提取属性 • 部分应用可以创建专用函数 • 与 `.lazy` 结合,构建零拷贝数据管道 下一节:惰性序列。
免费开始

用 AI 导师学习 Swift — 免费

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

课程
122
课程
409

常见问题解答

「函数组合与数据管道」课时是免费的吗?

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

「函数组合与数据管道」这节课中我会学到什么?

将小型函数组合成更大的转换流程,构建数据管道。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

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

「函数组合与数据管道」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 纯函数与无副作用设计
  2. 高阶函数:map、flatMap、compactMap
  3. 函数组合与数据管道
  4. 用于提升效率的惰性序列
← 返回 Swift Academy