函数组合与数据管道
将小型函数组合成更大的转换流程,构建数据管道。
第 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
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 反馈 — 无需本地设置。