Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 常用高阶函数:map、filter、forEach、reduce

常用高阶函数:map、filter、forEach、reduce

1. map:转换集合元素

map 函数用于对集合中的每个元素进行转换,并返回一个新的集合(通常是 List)。
语法:

val result = collection.map { element -> transform(element) }

示例:

val numbers = listOf(1, 2, 3)
val squared = numbers.map { it * it } // [1, 4, 9]

2. filter:过滤集合元素

filter 函数根据条件筛选集合中的元素,返回满足条件的元素组成的新集合。
语法:

val result = collection.filter { element -> condition }

示例:

val numbers = listOf(1, 2, 3, 4)
val evens = numbers.filter { it % 2 == 0 } // [2, 4]

3. forEach:遍历集合元素

forEach 用于遍历集合中的每个元素并执行操作(无返回值)。
语法:

collection.forEach { element -> action(element) }

示例:

listOf("A", "B", "C").forEach { println(it) }
// 输出:
// A
// B
// C

4. reduce:累积计算结果

reduce 将集合中的元素按顺序累积计算,最终返回一个单一结果。
语法:

val result = collection.reduce { acc, element -> operation(acc, element) }

示例:

val numbers = listOf(1, 2, 3, 4)
val sum = numbers.reduce { acc, num -> acc + num } // 10

组合使用示例

高阶函数可以链式调用,实现复杂的数据处理逻辑:

val result = listOf(1, 2, 3, 4, 5)
    .filter { it % 2 == 1 }    // 保留奇数 [1, 3, 5]
    .map { it * 2 }            // 每个元素乘以 2 [2, 6, 10]
    .reduce { acc, i -> acc + i } // 累加结果:18

注意事项

  1. 性能考虑:链式调用会创建中间集合,对大数据集建议使用 Sequence(见第 11 章)。
  2. 空安全:若集合可能为空,使用 reduceOrNull 替代 reduce。
  3. 纯函数:Lambda 中避免副作用(如修改外部变量),保持函数式编程的纯粹性。
Last Updated:: 5/21/25, 7:58 PM